{
    "swagger": "2.0",
    "info": {
        "description": "Telerehab Platform",
        "title": "Kymu API",
        "contact": {},
        "version": "1.0"
    },
    "host": "localhost:8000",
    "basePath": "/",
    "paths": {
        "/admin": {
            "get": {
                "description": "Get the admin panel index page (HTML)",
                "produces": [
                    "text/html"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Admin index",
                "responses": {
                    "200": {
                        "description": "HTML content",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/admin/login": {
            "get": {
                "description": "Get the admin login page (HTML)",
                "produces": [
                    "text/html"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Admin login page",
                "responses": {
                    "200": {
                        "description": "HTML content",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            },
            "post": {
                "description": "Authenticate admin user and set session cookie",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Admin login",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Email",
                        "name": "email",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Password",
                        "name": "password",
                        "in": "formData",
                        "required": true
                    }
                ],
                "responses": {
                    "303": {
                        "description": "Redirect to admin index"
                    }
                }
            }
        },
        "/admin/logout": {
            "get": {
                "description": "Log out admin and clear session cookie",
                "tags": [
                    "admin"
                ],
                "summary": "Admin logout",
                "responses": {
                    "303": {
                        "description": "Redirect to login"
                    }
                }
            }
        },
        "/admin/pose-sessions/download-all": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Download a ZIP archive of all pose sessions",
                "tags": [
                    "admin"
                ],
                "summary": "Download all pose sessions",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "file"
                        }
                    }
                }
            }
        },
        "/admin/pose-sessions/{id}/download": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Download a specific pose session file",
                "tags": [
                    "admin"
                ],
                "summary": "Download pose session",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Session ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "file"
                        }
                    }
                }
            }
        },
        "/admin/setup": {
            "post": {
                "description": "Initial admin user setup",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Admin setup",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Email",
                        "name": "email",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Password",
                        "name": "password",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Setup token",
                        "name": "token",
                        "in": "query"
                    }
                ],
                "responses": {
                    "303": {
                        "description": "Redirect to login"
                    }
                }
            }
        },
        "/admin/users/{id}/delete": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete a user (Admin action, returns HTML fragment)",
                "tags": [
                    "admin"
                ],
                "summary": "Delete user",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "HTML fragment",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/admin/users/{id}/reset-password": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Trigger password reset for a user (Admin action, returns HTML fragment)",
                "tags": [
                    "admin"
                ],
                "summary": "Reset user password",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "HTML fragment",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/admin/users/{id}/role": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Set a user's role (Admin action, returns HTML fragment)",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Set user role",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "New role",
                        "name": "role",
                        "in": "formData",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "HTML fragment",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/admin/users/{id}/status": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Activate or deactivate a user (Admin action, returns HTML fragment)",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Set user status",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Action (activate/deactivate)",
                        "name": "action",
                        "in": "formData",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "HTML fragment",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/auth/change-password": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Change the password of the currently authenticated user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Change password",
                "parameters": [
                    {
                        "description": "Change password request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/forgot-password": {
            "post": {
                "description": "Request a password reset link",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Forgot password",
                "parameters": [
                    {
                        "description": "Forgot password request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ForgotPasswordRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/login": {
            "post": {
                "description": "Authenticate user and return access token",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Login",
                "parameters": [
                    {
                        "description": "Login request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.LoginRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.LoginResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/me": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get the profile of the currently authenticated user",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Get current user",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/register": {
            "post": {
                "description": "Create a new user account with email, password, and role",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Register a new user",
                "parameters": [
                    {
                        "description": "Register request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.RegisterRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/reset-password": {
            "post": {
                "description": "Reset password using a token",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Reset password",
                "parameters": [
                    {
                        "description": "Reset password request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ResetPasswordRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/caregivers/me/patients": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a list of patients linked to the currently authenticated caregiver.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caregivers"
                ],
                "summary": "List my patients",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_CaregiverPatientResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Link a patient to the currently authenticated caregiver.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caregivers"
                ],
                "summary": "Add patient to my care",
                "parameters": [
                    {
                        "description": "Add patient request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.CaregiverPatientCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.CaregiverPatientResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/caregivers/me/patients/{patient_id}": {
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Unlink a patient from the currently authenticated caregiver.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caregivers"
                ],
                "summary": "Remove patient from my care",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "patient_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/caregivers/patients/{patient_id}/caregivers": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a list of caregivers for a specific patient.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caregivers"
                ],
                "summary": "List patient's caregivers",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "patient_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_CaregiverPatientResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/caregivers/{id}/patients": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a list of patients for a specific caregiver. Admin only.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caregivers"
                ],
                "summary": "List caregiver's patients",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Caregiver ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_CaregiverPatientResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/devices": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all registered devices with pagination (Admin only)",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "devices"
                ],
                "summary": "List all devices",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_DeviceResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Register a new device (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "devices"
                ],
                "summary": "Create device",
                "parameters": [
                    {
                        "description": "Device Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.DeviceCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.DeviceResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/devices/me": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all devices linked to the authenticated user",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "devices"
                ],
                "summary": "List my devices",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_DeviceResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/devices/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get metadata for a specific device (Admin only)",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "devices"
                ],
                "summary": "Get device",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Device UUID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.DeviceResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update an existing device's metadata (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "devices"
                ],
                "summary": "Update device",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Device UUID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Device Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.DeviceUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.DeviceResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete an existing device (Admin only)",
                "tags": [
                    "devices"
                ],
                "summary": "Delete device",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Device UUID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/devices/{id}/sessions": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all sessions for a specific device",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "devices"
                ],
                "summary": "List device sessions",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Device UUID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_DeviceSessionResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Start a new session for a specific device",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "devices"
                ],
                "summary": "Create device session",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Device UUID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.DeviceSessionResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/devices/{id}/sessions/{session_id}/end": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Mark a device session as ended",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "devices"
                ],
                "summary": "End device session",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Device UUID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Session ID",
                        "name": "session_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.DeviceSessionResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/devices/{id}/users/{user_id}": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Associate a user with a device (Admin only)",
                "tags": [
                    "devices"
                ],
                "summary": "Link user to device",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Device UUID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "user_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Remove the association between a user and a device (Admin only)",
                "tags": [
                    "devices"
                ],
                "summary": "Unlink user from device",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Device UUID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "user_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/game-categories": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all game categories with pagination",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_categories"
                ],
                "summary": "List game categories",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_GameCategoryResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create a new game category (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_categories"
                ],
                "summary": "Create game category",
                "parameters": [
                    {
                        "description": "Category Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameCategoryCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameCategory"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/game-categories/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a game category by ID",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_categories"
                ],
                "summary": "Get game category",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Category ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameCategoryResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update an existing game category (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_categories"
                ],
                "summary": "Update game category",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Category ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Category Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameCategoryUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameCategory"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete an existing game category (Admin only)",
                "tags": [
                    "game_categories"
                ],
                "summary": "Delete game category",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Category ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/game-sessions": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List game sessions with pagination and filtering by patient, game, or date range",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_sessions"
                ],
                "summary": "List game sessions",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Filter by patient ID",
                        "name": "patient_id",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Filter by game ID",
                        "name": "game_id",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by start date (RFC3339)",
                        "name": "from_date",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by end date (RFC3339)",
                        "name": "to_date",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_GameSessionResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Start a new game session",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_sessions"
                ],
                "summary": "Create game session",
                "parameters": [
                    {
                        "description": "Session Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameSessionCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameSessionResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/game-sessions/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get metadata for a specific game session",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_sessions"
                ],
                "summary": "Get game session",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Session ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameSessionResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/game-sessions/{id}/detail": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get metadata, progress, and feedback for a specific game session",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_sessions"
                ],
                "summary": "Get game session detail",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Session ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameSessionDetailResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/game-sessions/{id}/end": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Mark a game session as ended",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_sessions"
                ],
                "summary": "End game session",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Session ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameSessionResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/game-sessions/{id}/feedback": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get the feedback for a specific game session",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_sessions"
                ],
                "summary": "Get game feedback",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Session ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameFeedbackResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Submit feedback for a specific game session",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_sessions"
                ],
                "summary": "Create game feedback",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Session ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Feedback Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameFeedbackCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameFeedbackResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/game-sessions/{id}/progress": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all progress entries for a specific game session",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_sessions"
                ],
                "summary": "List game progress",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Session ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/kymu-backend_internal_model.GameProgressResponse"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Add a progress entry to a specific game session",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "game_sessions"
                ],
                "summary": "Create game progress",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Session ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Progress Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameProgressCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameProgressResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/games": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all games with pagination and optional category filtering",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "games"
                ],
                "summary": "List games",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Filter by category ID",
                        "name": "category_id",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_GameResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create a new game (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "games"
                ],
                "summary": "Create game",
                "parameters": [
                    {
                        "description": "Game Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Game"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/games/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a game by ID",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "games"
                ],
                "summary": "Get game",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Game ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update an existing game (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "games"
                ],
                "summary": "Update game",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Game ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Game Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.GameUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Game"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete an existing game (Admin only)",
                "tags": [
                    "games"
                ],
                "summary": "Delete game",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Game ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/games/{id}/categories/{category_id}": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Associate a game with a category (Admin only)",
                "tags": [
                    "games"
                ],
                "summary": "Link game to category",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Game ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Category ID",
                        "name": "category_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Remove the association between a game and a category (Admin only)",
                "tags": [
                    "games"
                ],
                "summary": "Unlink game from category",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Game ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Category ID",
                        "name": "category_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/media/upload": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Upload a media file (image)",
                "consumes": [
                    "multipart/form-data"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "media"
                ],
                "summary": "Upload media",
                "parameters": [
                    {
                        "type": "file",
                        "description": "File to upload",
                        "name": "file",
                        "in": "formData",
                        "required": true
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "413": {
                        "description": "Request Entity Too Large",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/media/upload-avatar": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Upload a user avatar",
                "consumes": [
                    "multipart/form-data"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "media"
                ],
                "summary": "Upload avatar",
                "parameters": [
                    {
                        "type": "file",
                        "description": "Avatar file to upload",
                        "name": "file",
                        "in": "formData",
                        "required": true
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "413": {
                        "description": "Request Entity Too Large",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/media/{filename}": {
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete a media file by filename",
                "tags": [
                    "media"
                ],
                "summary": "Delete media",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Filename",
                        "name": "filename",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a paginated list of patients. Admins see all, therapists see their linked patients, patients see only themselves.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "List patients",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search by name or email",
                        "name": "search",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_UserResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create a new patient account. Accessible by admins and therapists.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Create patient",
                "parameters": [
                    {
                        "description": "Create patient request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get patient details by ID.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Get patient",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update patient details. Accessible by admins and therapists.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Update patient",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update patient request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete a patient account. Admin only.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Delete patient",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/conditions": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a list of medical conditions for a specific patient.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "conditions"
                ],
                "summary": "List patient conditions",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_PatientConditionResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Add a new medical condition for a patient. Only accessible by admins and therapists.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "conditions"
                ],
                "summary": "Create patient condition",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Create condition request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientConditionCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientConditionResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/conditions/{condition_id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get details of a specific medical condition for a patient.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "conditions"
                ],
                "summary": "Get patient condition",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Condition ID",
                        "name": "condition_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientConditionResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update details of a medical condition for a patient. Only accessible by admins and therapists.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "conditions"
                ],
                "summary": "Update patient condition",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Condition ID",
                        "name": "condition_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update condition request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientConditionUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientConditionResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete a medical condition for a patient. Only accessible by admins and therapists.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "conditions"
                ],
                "summary": "Delete patient condition",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Condition ID",
                        "name": "condition_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/exercise-profiles": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all exercise profiles (ROM data) for a specific patient",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "exercise_profiles"
                ],
                "summary": "List exercise profiles for patient",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ExerciseProfilesResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create or update multiple exercise profiles for a specific patient",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "exercise_profiles"
                ],
                "summary": "Upsert exercise profiles for patient",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Exercise Profiles Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ExerciseProfilesUpsertRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ExerciseProfilesResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/game-sessions": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a paginated list of game sessions for a patient.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "List patient game sessions",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_GameSessionResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/link": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Link the current therapist to a patient. Therapist only.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Link patient",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/notes": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a paginated list of session notes for a patient.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "List patient notes",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Filter by game session ID",
                        "name": "game_session_id",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_TherapistSessionNote"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create a new session note for a patient.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Create patient note",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Create note request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TherapistSessionNoteCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TherapistSessionNote"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/notes/{note_id}": {
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update an existing session note.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Update patient note",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Note ID",
                        "name": "note_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update note request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TherapistSessionNoteUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TherapistSessionNote"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete a session note.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Delete patient note",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Note ID",
                        "name": "note_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/pose-sessions": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a paginated list of pose sessions for a patient.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "List patient pose sessions",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_PoseSessionResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/rom-trends": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get ROM trend data aggregated from pose session repetitions. Admin and therapist only.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Get patient ROM trends",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Filter by exercise name (e.g. left_shoulder)",
                        "name": "exercise",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Start date (RFC3339)",
                        "name": "from_date",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "End date (RFC3339)",
                        "name": "to_date",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ROMTrendsResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/stats": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get statistics for a patient.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Get patient stats",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Start date (RFC3339)",
                        "name": "from_date",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "End date (RFC3339)",
                        "name": "to_date",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientStatsResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/summary": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a summary of patient activity.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "Get patient summary",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientSummaryResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/therapist-notes": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all notes from all therapists for a specific patient (Admin only)",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "therapist_notes"
                ],
                "summary": "List all therapist notes for patient",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_TherapistPatientNoteResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/therapist-notes/me": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get the note written by the authenticated therapist for a specific patient",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "therapist_notes"
                ],
                "summary": "Get therapist note for patient",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TherapistPatientNoteResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create or update the note written by the authenticated therapist for a specific patient",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "therapist_notes"
                ],
                "summary": "Upsert therapist note for patient",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Note Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TherapistPatientNoteUpsertRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TherapistPatientNoteResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete the note written by the authenticated therapist for a specific patient",
                "tags": [
                    "therapist_notes"
                ],
                "summary": "Delete therapist note for patient",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/patients/{id}/training-plans": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a paginated list of training plans for a patient.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "patients"
                ],
                "summary": "List patient training plans",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Patient ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_TrainingPlanResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/pose-sessions": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all pose sessions with optional filtering by user or device session (Admin/Therapist only)",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "pose_sessions"
                ],
                "summary": "List pose sessions",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Filter by user ID",
                        "name": "user_id",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Filter by device session ID",
                        "name": "device_session_id",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_PoseSession"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Upload a .kpse pose session file associated with a device session",
                "consumes": [
                    "multipart/form-data"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "pose_sessions"
                ],
                "summary": "Upload pose session",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Device Session ID",
                        "name": "device_session_id",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "JSON array of repetitions",
                        "name": "repetitions",
                        "in": "query"
                    },
                    {
                        "type": "file",
                        "description": "Session file (.kpse)",
                        "name": "file",
                        "in": "formData",
                        "required": true
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PoseSession"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/pose-sessions/me": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all pose sessions for the authenticated user",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "pose_sessions"
                ],
                "summary": "List my pose sessions",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_PoseSession"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/pose-sessions/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get metadata for a specific pose session (Admin/Therapist only)",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "pose_sessions"
                ],
                "summary": "Get pose session",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Pose Session UUID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PoseSession"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/pose-sessions/{id}/download": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Download the .kpse file for a specific pose session",
                "produces": [
                    "application/octet-stream"
                ],
                "tags": [
                    "pose_sessions"
                ],
                "summary": "Download pose session file",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Pose Session UUID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "file"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/training-plan-templates": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all training plan templates with pagination",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "List training plan templates",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_TrainingPlanTemplateResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create a new training plan template (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "Create training plan template",
                "parameters": [
                    {
                        "description": "Template Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanTemplateCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanTemplateResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/training-plan-templates/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get metadata for a specific training plan template",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "Get training plan template",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Template ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanTemplateResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update an existing training plan template (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "Update training plan template",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Template ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Template Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanTemplateUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanTemplateResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete an existing training plan template (Admin only)",
                "tags": [
                    "training_plans"
                ],
                "summary": "Delete training plan template",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Template ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/training-plan-templates/{id}/games": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List IDs of all games associated with a training plan template",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "List games in template",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Template ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Associate a game with a training plan template (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "Add game to template",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Template ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Game ID",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanTemplateAddGameRequest"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/training-plan-templates/{id}/games/{game_id}": {
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Remove the association between a game and a training plan template (Admin only)",
                "tags": [
                    "training_plans"
                ],
                "summary": "Remove game from template",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Template ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Game ID",
                        "name": "game_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/training-plans": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List training plans for the authenticated user (filters by role)",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "List training plans",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_TrainingPlanResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create a new training plan for a patient (Admin or linked Therapist only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "Create training plan",
                "parameters": [
                    {
                        "description": "Plan Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/training-plans/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get metadata for a specific training plan",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "Get training plan",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Plan ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update an existing training plan (Admin or Creator only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "Update training plan",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Plan ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Plan Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete an existing training plan (Admin or Creator only)",
                "tags": [
                    "training_plans"
                ],
                "summary": "Delete training plan",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Plan ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/training-plans/{id}/games": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List IDs of all games associated with a training plan",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "training_plans"
                ],
                "summary": "List games in plan",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Plan ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/training-plans/{id}/games/{game_id}": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Associate a game with a training plan (Admin or Creator only)",
                "tags": [
                    "training_plans"
                ],
                "summary": "Add game to plan",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Plan ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Game ID",
                        "name": "game_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Remove the association between a game and a training plan (Admin or Creator only)",
                "tags": [
                    "training_plans"
                ],
                "summary": "Remove game from plan",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Plan ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Game ID",
                        "name": "game_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a paginated list of all users",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "List users",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Number of items to skip",
                        "name": "skip",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.Page-kymu-backend_internal_model_UserResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a user by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Get user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update a user's information",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Update user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserUpdateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete a user by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Delete user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/{id}/patient-profile": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get the patient-specific profile details for a specific user",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profiles"
                ],
                "summary": "Get patient profile",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientProfileResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update or create the patient-specific profile details for a specific user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profiles"
                ],
                "summary": "Update patient profile",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Patient Profile Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientProfileUpsertRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.PatientProfileResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/{id}/profile": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get the profile details for a specific user",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profiles"
                ],
                "summary": "Get user profile",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserProfileResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update or create the profile details for a specific user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profiles"
                ],
                "summary": "Update user profile",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Profile Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserProfileUpsertRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserProfileResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete the profile details for a specific user (Admin only)",
                "tags": [
                    "profiles"
                ],
                "summary": "Delete user profile",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/{id}/therapist-profile": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get the therapist-specific profile details for a specific user",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profiles"
                ],
                "summary": "Get therapist profile",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TherapistProfileResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update or create the therapist-specific profile details for a specific user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profiles"
                ],
                "summary": "Update therapist profile",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Therapist Profile Data",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TherapistProfileUpsertRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.TherapistProfileResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/kymu-backend_internal_model.ErrorResponse"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "kymu-backend_internal_model.CaregiverPatientCreateRequest": {
            "type": "object",
            "required": [
                "patient_id"
            ],
            "properties": {
                "patient_id": {
                    "type": "integer"
                },
                "relationship": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.CaregiverPatientResponse": {
            "type": "object",
            "properties": {
                "caregiver_id": {
                    "type": "integer"
                },
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "patient_id": {
                    "type": "integer"
                },
                "relationship": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.ConditionSeverity": {
            "type": "string",
            "enum": [
                "mild",
                "moderate",
                "severe"
            ],
            "x-enum-varnames": [
                "SeverityMild",
                "SeverityModerate",
                "SeveritySevere"
            ]
        },
        "kymu-backend_internal_model.DeviceCreateRequest": {
            "type": "object",
            "required": [
                "name"
            ],
            "properties": {
                "name": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.DeviceResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.DeviceSessionResponse": {
            "type": "object",
            "properties": {
                "device_id": {
                    "type": "string"
                },
                "ended_at": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "started_at": {
                    "type": "string"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.DeviceUpdateRequest": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.ErrorResponse": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.ExerciseProfileResponse": {
            "type": "object",
            "properties": {
                "exercise": {
                    "type": "string"
                },
                "last_peak_angle": {
                    "type": "number"
                },
                "median_rom": {
                    "type": "number"
                },
                "min_rom_threshold": {
                    "type": "number"
                },
                "sample_count": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.ExerciseProfileUpsertRequest": {
            "type": "object",
            "required": [
                "exercise",
                "median_rom",
                "min_rom_threshold"
            ],
            "properties": {
                "exercise": {
                    "type": "string"
                },
                "last_peak_angle": {
                    "type": "number"
                },
                "median_rom": {
                    "type": "number"
                },
                "min_rom_threshold": {
                    "type": "number"
                },
                "sample_count": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.ExerciseProfilesResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.ExerciseProfileResponse"
                    }
                }
            }
        },
        "kymu-backend_internal_model.ExerciseProfilesUpsertRequest": {
            "type": "object",
            "required": [
                "profiles"
            ],
            "properties": {
                "profiles": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.ExerciseProfileUpsertRequest"
                    }
                }
            }
        },
        "kymu-backend_internal_model.ForgotPasswordRequest": {
            "type": "object",
            "required": [
                "email"
            ],
            "properties": {
                "email": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.Game": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "description_de": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name_de": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.GameCategory": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "description_de": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name_de": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.GameCategoryCreateRequest": {
            "type": "object",
            "required": [
                "description_de",
                "name_de"
            ],
            "properties": {
                "description_de": {
                    "type": "string"
                },
                "name_de": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.GameCategoryResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "description_de": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name_de": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.GameCategoryUpdateRequest": {
            "type": "object",
            "properties": {
                "description_de": {
                    "type": "string"
                },
                "name_de": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.GameCreateRequest": {
            "type": "object",
            "required": [
                "description_de",
                "name_de"
            ],
            "properties": {
                "description_de": {
                    "type": "string"
                },
                "name_de": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.GameFeedbackCreateRequest": {
            "type": "object",
            "required": [
                "rating"
            ],
            "properties": {
                "rating": {
                    "type": "integer",
                    "maximum": 5,
                    "minimum": 1
                }
            }
        },
        "kymu-backend_internal_model.GameFeedbackResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "rating": {
                    "type": "integer"
                },
                "session_id": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.GameProgressCreateRequest": {
            "type": "object",
            "required": [
                "progress_data"
            ],
            "properties": {
                "progress_data": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                }
            }
        },
        "kymu-backend_internal_model.GameProgressResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "progress_data": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "session_id": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.GameResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "description_de": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name_de": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.GameSessionCreateRequest": {
            "type": "object",
            "required": [
                "game_id"
            ],
            "properties": {
                "game_id": {
                    "type": "integer"
                },
                "training_plan_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.GameSessionDetailResponse": {
            "type": "object",
            "properties": {
                "ended_at": {
                    "type": "string"
                },
                "feedback": {
                    "$ref": "#/definitions/kymu-backend_internal_model.GameFeedbackResponse"
                },
                "game_id": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "progress": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.GameProgressResponse"
                    }
                },
                "started_at": {
                    "type": "string"
                },
                "training_plan_id": {
                    "type": "integer"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.GameSessionResponse": {
            "type": "object",
            "properties": {
                "ended_at": {
                    "type": "string"
                },
                "game_id": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "started_at": {
                    "type": "string"
                },
                "training_plan_id": {
                    "type": "integer"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.GameUpdateRequest": {
            "type": "object",
            "properties": {
                "description_de": {
                    "type": "string"
                },
                "name_de": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.GenderType": {
            "type": "string",
            "enum": [
                "male",
                "female",
                "other"
            ],
            "x-enum-varnames": [
                "GenderMale",
                "GenderFemale",
                "GenderOther"
            ]
        },
        "kymu-backend_internal_model.LoginRequest": {
            "type": "object",
            "required": [
                "email",
                "password"
            ],
            "properties": {
                "email": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.LoginResponse": {
            "type": "object",
            "properties": {
                "access_token": {
                    "type": "string"
                },
                "token_type": {
                    "type": "string"
                },
                "user": {
                    "$ref": "#/definitions/kymu-backend_internal_model.UserResponse"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_CaregiverPatientResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.CaregiverPatientResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_DeviceResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.DeviceResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_DeviceSessionResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.DeviceSessionResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_GameCategoryResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.GameCategoryResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_GameResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.GameResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_GameSessionResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.GameSessionResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_PatientConditionResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.PatientConditionResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_PoseSession": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.PoseSession"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_PoseSessionResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.PoseSessionResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_TherapistPatientNoteResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.TherapistPatientNoteResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_TherapistSessionNote": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.TherapistSessionNote"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_TrainingPlanResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_TrainingPlanTemplateResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.TrainingPlanTemplateResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.Page-kymu-backend_internal_model_UserResponse": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.UserResponse"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "skip": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.PatientConditionCreateRequest": {
            "type": "object",
            "required": [
                "condition_name"
            ],
            "properties": {
                "condition_name": {
                    "type": "string"
                },
                "diagnosis_date": {
                    "type": "string"
                },
                "notes": {
                    "type": "string"
                },
                "severity": {
                    "$ref": "#/definitions/kymu-backend_internal_model.ConditionSeverity"
                }
            }
        },
        "kymu-backend_internal_model.PatientConditionResponse": {
            "type": "object",
            "properties": {
                "condition_name": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "diagnosis_date": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "notes": {
                    "type": "string"
                },
                "patient_id": {
                    "type": "integer"
                },
                "severity": {
                    "$ref": "#/definitions/kymu-backend_internal_model.ConditionSeverity"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.PatientConditionUpdateRequest": {
            "type": "object",
            "properties": {
                "condition_name": {
                    "type": "string"
                },
                "diagnosis_date": {
                    "type": "string"
                },
                "notes": {
                    "type": "string"
                },
                "severity": {
                    "$ref": "#/definitions/kymu-backend_internal_model.ConditionSeverity"
                }
            }
        },
        "kymu-backend_internal_model.PatientCreateRequest": {
            "type": "object",
            "required": [
                "email",
                "first_name",
                "last_name",
                "password"
            ],
            "properties": {
                "email": {
                    "type": "string"
                },
                "first_name": {
                    "type": "string"
                },
                "last_name": {
                    "type": "string"
                },
                "password": {
                    "type": "string",
                    "minLength": 8
                }
            }
        },
        "kymu-backend_internal_model.PatientProfile": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "emergency_contact_name": {
                    "type": "string"
                },
                "emergency_contact_phone": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "notes": {
                    "type": "string"
                },
                "primary_condition_id": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.PatientProfileResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "emergency_contact_name": {
                    "type": "string"
                },
                "emergency_contact_phone": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "notes": {
                    "type": "string"
                },
                "primary_condition_id": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.PatientProfileUpsertRequest": {
            "type": "object",
            "properties": {
                "emergency_contact_name": {
                    "type": "string"
                },
                "emergency_contact_phone": {
                    "type": "string"
                },
                "notes": {
                    "type": "string"
                },
                "primary_condition_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.PatientStatsResponse": {
            "type": "object",
            "properties": {
                "avg_game_rating": {
                    "type": "number"
                },
                "from_date": {
                    "type": "string"
                },
                "to_date": {
                    "type": "string"
                },
                "total_game_sessions": {
                    "type": "integer"
                },
                "total_pose_sessions": {
                    "type": "integer"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.PatientSummaryResponse": {
            "type": "object",
            "properties": {
                "patient_profile": {
                    "$ref": "#/definitions/kymu-backend_internal_model.PatientProfile"
                },
                "total_game_sessions": {
                    "type": "integer"
                },
                "total_pose_sessions": {
                    "type": "integer"
                },
                "user": {
                    "$ref": "#/definitions/kymu-backend_internal_model.User"
                }
            }
        },
        "kymu-backend_internal_model.PatientUpdateRequest": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "first_name": {
                    "type": "string"
                },
                "is_active": {
                    "type": "boolean"
                },
                "last_name": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.PoseSession": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "device_session_id": {
                    "type": "integer"
                },
                "file_path": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "repetitions": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "session_id": {
                    "type": "string"
                },
                "size_bytes": {
                    "type": "integer"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.PoseSessionResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "device_session_id": {
                    "type": "integer"
                },
                "id": {
                    "type": "string"
                },
                "repetitions": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "session_id": {
                    "type": "string"
                },
                "size_bytes": {
                    "type": "integer"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.ROMDataPoint": {
            "type": "object",
            "properties": {
                "avg_rom": {
                    "type": "number"
                },
                "compensated_pct": {
                    "type": "number"
                },
                "date": {
                    "type": "string"
                },
                "max_rom": {
                    "type": "number"
                },
                "min_rom": {
                    "type": "number"
                },
                "motion_planes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                },
                "rep_count": {
                    "type": "integer"
                },
                "session_id": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.ROMTrendSummary": {
            "type": "object",
            "properties": {
                "bilateral_asymmetry": {
                    "type": "number"
                },
                "overall_avg_rom": {
                    "type": "number"
                },
                "total_reps": {
                    "type": "integer"
                },
                "trend": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.ROMTrendsResponse": {
            "type": "object",
            "properties": {
                "data_points": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/kymu-backend_internal_model.ROMDataPoint"
                    }
                },
                "exercise": {
                    "type": "string"
                },
                "summary": {
                    "$ref": "#/definitions/kymu-backend_internal_model.ROMTrendSummary"
                },
                "unit": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.RegisterRequest": {
            "type": "object",
            "required": [
                "email",
                "first_name",
                "last_name",
                "password",
                "role"
            ],
            "properties": {
                "email": {
                    "type": "string"
                },
                "first_name": {
                    "type": "string"
                },
                "last_name": {
                    "type": "string"
                },
                "password": {
                    "type": "string",
                    "minLength": 8
                },
                "role": {
                    "enum": [
                        "admin",
                        "therapist",
                        "patient",
                        "caregiver"
                    ],
                    "allOf": [
                        {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserRole"
                        }
                    ]
                }
            }
        },
        "kymu-backend_internal_model.ResetPasswordRequest": {
            "type": "object",
            "required": [
                "password",
                "token"
            ],
            "properties": {
                "password": {
                    "type": "string",
                    "minLength": 8
                },
                "token": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.TherapistPatientNoteResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "note": {
                    "type": "string"
                },
                "patient_id": {
                    "type": "integer"
                },
                "therapist_id": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.TherapistPatientNoteUpsertRequest": {
            "type": "object",
            "required": [
                "note"
            ],
            "properties": {
                "note": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.TherapistProfileResponse": {
            "type": "object",
            "properties": {
                "accepts_new_patients": {
                    "type": "boolean"
                },
                "bio": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "license_number": {
                    "type": "string"
                },
                "practice_address": {
                    "type": "string"
                },
                "practice_city": {
                    "type": "string"
                },
                "practice_country": {
                    "type": "string"
                },
                "practice_name": {
                    "type": "string"
                },
                "practice_postal_code": {
                    "type": "string"
                },
                "specializations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "therapist_type": {
                    "$ref": "#/definitions/kymu-backend_internal_model.TherapistType"
                },
                "updated_at": {
                    "type": "string"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.TherapistProfileUpsertRequest": {
            "type": "object",
            "properties": {
                "accepts_new_patients": {
                    "type": "boolean"
                },
                "bio": {
                    "type": "string"
                },
                "license_number": {
                    "type": "string"
                },
                "practice_address": {
                    "type": "string"
                },
                "practice_city": {
                    "type": "string"
                },
                "practice_country": {
                    "type": "string"
                },
                "practice_name": {
                    "type": "string"
                },
                "practice_postal_code": {
                    "type": "string"
                },
                "specializations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "therapist_type": {
                    "$ref": "#/definitions/kymu-backend_internal_model.TherapistType"
                }
            }
        },
        "kymu-backend_internal_model.TherapistSessionNote": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "game_session_id": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "note": {
                    "type": "string"
                },
                "patient_id": {
                    "type": "integer"
                },
                "therapist_id": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.TherapistSessionNoteCreateRequest": {
            "type": "object",
            "required": [
                "note"
            ],
            "properties": {
                "game_session_id": {
                    "type": "integer"
                },
                "note": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.TherapistSessionNoteUpdateRequest": {
            "type": "object",
            "required": [
                "note"
            ],
            "properties": {
                "note": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.TherapistType": {
            "type": "string",
            "enum": [
                "neuropsychologist",
                "occupational_therapist",
                "speech_therapist",
                "physiotherapist",
                "psychologist",
                "other"
            ],
            "x-enum-varnames": [
                "TherapistNeuropsychologist",
                "TherapistOccupationalTherapist",
                "TherapistSpeechTherapist",
                "TherapistPhysiotherapist",
                "TherapistPsychologist",
                "TherapistOther"
            ]
        },
        "kymu-backend_internal_model.TrainingPlanCreateRequest": {
            "type": "object",
            "required": [
                "description",
                "name",
                "patient_profile_id"
            ],
            "properties": {
                "description": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "patient_profile_id": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                },
                "template_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.TrainingPlanResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "created_user_id": {
                    "type": "integer"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "patient_profile_id": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                },
                "template_id": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.TrainingPlanTemplateAddGameRequest": {
            "type": "object",
            "required": [
                "game_id"
            ],
            "properties": {
                "game_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.TrainingPlanTemplateCreateRequest": {
            "type": "object",
            "required": [
                "description",
                "name"
            ],
            "properties": {
                "description": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.TrainingPlanTemplateResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.TrainingPlanTemplateUpdateRequest": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.TrainingPlanUpdateRequest": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.User": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "first_name": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "is_active": {
                    "type": "boolean"
                },
                "last_name": {
                    "type": "string"
                },
                "role": {
                    "$ref": "#/definitions/kymu-backend_internal_model.UserRole"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.UserProfileResponse": {
            "type": "object",
            "properties": {
                "avatar_url": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "date_of_birth": {
                    "type": "string"
                },
                "gender": {
                    "$ref": "#/definitions/kymu-backend_internal_model.GenderType"
                },
                "phone": {
                    "type": "string"
                },
                "preferred_language": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "kymu-backend_internal_model.UserProfileUpsertRequest": {
            "type": "object",
            "properties": {
                "avatar_url": {
                    "type": "string"
                },
                "date_of_birth": {
                    "type": "string"
                },
                "gender": {
                    "$ref": "#/definitions/kymu-backend_internal_model.GenderType"
                },
                "phone": {
                    "type": "string"
                },
                "preferred_language": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.UserResponse": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "first_name": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "is_active": {
                    "type": "boolean"
                },
                "last_name": {
                    "type": "string"
                },
                "role": {
                    "$ref": "#/definitions/kymu-backend_internal_model.UserRole"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "kymu-backend_internal_model.UserRole": {
            "type": "string",
            "enum": [
                "admin",
                "therapist",
                "patient",
                "caregiver"
            ],
            "x-enum-varnames": [
                "RoleAdmin",
                "RoleTherapist",
                "RolePatient",
                "RoleCaregiver"
            ]
        },
        "kymu-backend_internal_model.UserUpdateRequest": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "first_name": {
                    "type": "string"
                },
                "is_active": {
                    "type": "boolean"
                },
                "last_name": {
                    "type": "string"
                },
                "role": {
                    "enum": [
                        "admin",
                        "therapist",
                        "patient",
                        "caregiver"
                    ],
                    "allOf": [
                        {
                            "$ref": "#/definitions/kymu-backend_internal_model.UserRole"
                        }
                    ]
                }
            }
        }
    },
    "securityDefinitions": {
        "BearerAuth": {
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        }
    }
}