{
    "swagger": "2.0",
    "info": {
        "description": "Backend authentication service for Photum.",
        "title": "Photum Backend API",
        "termsOfService": "http://swagger.io/terms/",
        "contact": {
            "name": "API Support",
            "url": "http://www.swagger.io/support",
            "email": "support@swagger.io"
        },
        "license": {
            "name": "Apache 2.0",
            "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
        },
        "version": "1.0"
    },
    "host": "localhost:8080",
    "basePath": "/",
    "paths": {
        "/api/admin/users": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all users (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "List all users",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create a new user with specific role (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Create user (Admin)",
                "parameters": [
                    {
                        "description": "Create User Request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/auth.registerRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/admin/users/pending": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List users with ativo=false",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "List pending users",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/admin/users/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get user details by ID (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Get user by ID",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete user (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Delete user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/admin/users/{id}/approve": {
            "patch": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Set user ativo=true",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Approve user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/admin/users/{id}/role": {
            "patch": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update user role (Admin only)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Update user role",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update Role Request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/auth.updateRoleRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/agenda": {
            "get": {
                "description": "List all agenda events with details",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "agenda"
                ],
                "summary": "List all agenda events",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "post": {
                "description": "Create a new agenda event",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "agenda"
                ],
                "summary": "Create a new agenda event",
                "parameters": [
                    {
                        "description": "Create Agenda Request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/agenda.CreateAgendaRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/agenda/{id}": {
            "get": {
                "description": "Get agenda event details by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "agenda"
                ],
                "summary": "Get agenda event by ID",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Agenda ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "put": {
                "description": "Update agenda event by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "agenda"
                ],
                "summary": "Update agenda event",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Agenda ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update Agenda Request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/agenda.CreateAgendaRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "delete": {
                "description": "Delete agenda event by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "agenda"
                ],
                "summary": "Delete agenda event",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Agenda ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/agenda/{id}/available": {
            "get": {
                "tags": [
                    "agenda"
                ],
                "summary": "List available professionals for agenda date",
                "responses": {}
            }
        },
        "/api/agenda/{id}/professionals": {
            "get": {
                "tags": [
                    "agenda"
                ],
                "summary": "Get professionals assigned to agenda",
                "responses": {}
            },
            "post": {
                "tags": [
                    "agenda"
                ],
                "summary": "Assign professional to agenda",
                "responses": {}
            }
        },
        "/api/agenda/{id}/professionals/{profId}": {
            "delete": {
                "tags": [
                    "agenda"
                ],
                "summary": "Remove professional from agenda",
                "responses": {}
            }
        },
        "/api/agenda/{id}/professionals/{profId}/position": {
            "patch": {
                "tags": [
                    "agenda"
                ],
                "summary": "Update professional position in agenda",
                "responses": {}
            }
        },
        "/api/agenda/{id}/professionals/{profId}/status": {
            "patch": {
                "tags": [
                    "agenda"
                ],
                "summary": "Update professional assignment status",
                "responses": {}
            }
        },
        "/api/agenda/{id}/status": {
            "patch": {
                "tags": [
                    "agenda"
                ],
                "summary": "Update agenda status",
                "responses": {}
            }
        },
        "/api/anos-formaturas": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "anos_formaturas"
                ],
                "summary": "List all graduation years",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/anos_formaturas.AnoFormaturaResponse"
                            }
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "anos_formaturas"
                ],
                "summary": "Create a new graduation year",
                "parameters": [
                    {
                        "description": "Ano Semestre",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/anos_formaturas.CreateAnoFormaturaRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/anos_formaturas.AnoFormaturaResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/anos-formaturas/{id}": {
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "anos_formaturas"
                ],
                "summary": "Update a graduation year",
                "parameters": [
                    {
                        "type": "string",
                        "description": "ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Ano Semestre",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/anos_formaturas.CreateAnoFormaturaRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/anos_formaturas.AnoFormaturaResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "anos_formaturas"
                ],
                "summary": "Delete a graduation year",
                "parameters": [
                    {
                        "type": "string",
                        "description": "ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    }
                }
            }
        },
        "/api/cadastro-fot": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "cadastro_fot"
                ],
                "summary": "List all FOT records",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Filter by Company ID",
                        "name": "empresa_id",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/cadastro_fot.CadastroFotResponse"
                            }
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "cadastro_fot"
                ],
                "summary": "Create a new FOT record",
                "parameters": [
                    {
                        "description": "FOT Data",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/cadastro_fot.CreateInput"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/cadastro_fot.CadastroFotResponse"
                        }
                    }
                }
            }
        },
        "/api/cadastro-fot/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "cadastro_fot"
                ],
                "summary": "Get FOT record by ID",
                "parameters": [
                    {
                        "type": "string",
                        "description": "ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/cadastro_fot.CadastroFotResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "cadastro_fot"
                ],
                "summary": "Update FOT record",
                "parameters": [
                    {
                        "type": "string",
                        "description": "ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Data",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/cadastro_fot.CreateInput"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/cadastro_fot.CadastroFotResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "cadastro_fot"
                ],
                "summary": "Delete FOT record",
                "parameters": [
                    {
                        "type": "string",
                        "description": "ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    }
                }
            }
        },
        "/api/codigos-acesso": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "codigos"
                ],
                "summary": "List Access Codes",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "codigos"
                ],
                "summary": "Create Access Code",
                "parameters": [
                    {
                        "description": "Req",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/codigos.CreateCodigoInput"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/codigos-acesso/{id}": {
            "delete": {
                "tags": [
                    "codigos"
                ],
                "summary": "Delete Access Code",
                "parameters": [
                    {
                        "type": "string",
                        "description": "ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/cursos": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "cursos"
                ],
                "summary": "List all courses",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/cursos.CursoResponse"
                            }
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "cursos"
                ],
                "summary": "Create a new course",
                "parameters": [
                    {
                        "description": "Curso Name",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/cursos.CreateCursoRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/cursos.CursoResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/cursos/{id}": {
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "cursos"
                ],
                "summary": "Update a course",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Curso ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Curso Name",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/cursos.CreateCursoRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/cursos.CursoResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "cursos"
                ],
                "summary": "Delete a course",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Curso ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    }
                }
            }
        },
        "/api/empresas": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "empresas"
                ],
                "summary": "List all companies",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/empresas.EmpresaResponse"
                            }
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "empresas"
                ],
                "summary": "Create a new company",
                "parameters": [
                    {
                        "description": "Empresa Name",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/empresas.CreateEmpresaRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/empresas.EmpresaResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/empresas/{id}": {
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "empresas"
                ],
                "summary": "Update a company",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Empresa ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Empresa Name",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/empresas.CreateEmpresaRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/empresas.EmpresaResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "empresas"
                ],
                "summary": "Delete a company",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Empresa ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    }
                }
            }
        },
        "/api/escalas": {
            "get": {
                "description": "Get all schedule entries for a specific agenda_id",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "escalas"
                ],
                "summary": "List schedules for an event",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Agenda ID",
                        "name": "agenda_id",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                }
            },
            "post": {
                "description": "Assign a professional to a time block in an event",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "escalas"
                ],
                "summary": "Create a schedule entry",
                "parameters": [
                    {
                        "description": "Create Escala",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/escalas.CreateEscalaInput"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/escalas/{id}": {
            "put": {
                "description": "Update time or professional for a slot",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "escalas"
                ],
                "summary": "Update a schedule entry",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Escala ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update Escala",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/escalas.UpdateEscalaInput"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "delete": {
                "description": "Remove a professional from a time block",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "escalas"
                ],
                "summary": "Delete a schedule entry",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Escala ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/funcoes": {
            "get": {
                "description": "List all professional functions",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "funcoes"
                ],
                "summary": "List functions",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/funcoes.FuncaoResponse"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create a new professional function",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "funcoes"
                ],
                "summary": "Create a new function",
                "parameters": [
                    {
                        "description": "Create Function Request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/funcoes.CreateFuncaoRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/funcoes.FuncaoResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/funcoes/{id}": {
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update a professional function by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "funcoes"
                ],
                "summary": "Update function",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Function ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update Function Request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/funcoes.CreateFuncaoRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/funcoes.FuncaoResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete a professional function by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "funcoes"
                ],
                "summary": "Delete function",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Function ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/me": {
            "get": {
                "description": "Get current authenticated user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Get current user",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/auth.loginResponse"
                        }
                    }
                }
            }
        },
        "/api/profissionais": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "List all profissionais",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profissionais"
                ],
                "summary": "List profissionais",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/profissionais.ProfissionalResponse"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Create a new profissional record",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profissionais"
                ],
                "summary": "Create a new profissional",
                "parameters": [
                    {
                        "description": "Create Profissional Request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/profissionais.CreateProfissionalInput"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/profissionais.ProfissionalResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/profissionais/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a profissional by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profissionais"
                ],
                "summary": "Get profissional by ID",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Profissional ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/profissionais.ProfissionalResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Update a profissional by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profissionais"
                ],
                "summary": "Update profissional",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Profissional ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update Profissional Request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/profissionais.UpdateProfissionalInput"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/profissionais.ProfissionalResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete a profissional by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "profissionais"
                ],
                "summary": "Delete profissional",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Profissional ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/public/codigos-acesso/verificar": {
            "get": {
                "tags": [
                    "codigos"
                ],
                "summary": "Verify Access Code",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Code",
                        "name": "code",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "boolean"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/tipos-eventos": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tipos_eventos"
                ],
                "summary": "List all event types",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/tipos_eventos.EventoResponse"
                            }
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tipos_eventos"
                ],
                "summary": "Create a new event type",
                "parameters": [
                    {
                        "description": "Nome",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/tipos_eventos.CreateEventoRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/tipos_eventos.EventoResponse"
                        }
                    }
                }
            }
        },
        "/api/tipos-eventos/precos": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tipos_eventos"
                ],
                "summary": "Set price for an event function",
                "parameters": [
                    {
                        "description": "Price Input",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/tipos_eventos.PriceInput"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/tipos-eventos/{id}": {
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tipos_eventos"
                ],
                "summary": "Update an event type",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Event ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Event Data",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/tipos_eventos.CreateEventoRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/tipos_eventos.EventoResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tipos_eventos"
                ],
                "summary": "Delete an event type",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Event ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    }
                }
            }
        },
        "/api/tipos-eventos/{id}/precos": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tipos_eventos"
                ],
                "summary": "List prices for an event",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Event ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/tipos_eventos.PrecoResponse"
                            }
                        }
                    }
                }
            }
        },
        "/api/tipos-servicos": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tipos_servicos"
                ],
                "summary": "List all service types",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/tipos_servicos.TipoServicoResponse"
                            }
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tipos_servicos"
                ],
                "summary": "Create a new service type",
                "parameters": [
                    {
                        "description": "Nome",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/tipos_servicos.CreateTipoServicoRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/tipos_servicos.TipoServicoResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/tipos-servicos/{id}": {
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tipos_servicos"
                ],
                "summary": "Update a service type",
                "parameters": [
                    {
                        "type": "string",
                        "description": "ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Nome",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/tipos_servicos.CreateTipoServicoRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/tipos_servicos.TipoServicoResponse"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tipos_servicos"
                ],
                "summary": "Delete a service type",
                "parameters": [
                    {
                        "type": "string",
                        "description": "ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    }
                }
            }
        },
        "/auth/login": {
            "post": {
                "description": "Login with email and password",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Login",
                "parameters": [
                    {
                        "description": "Login Request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/auth.loginRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/auth.loginResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/auth/logout": {
            "post": {
                "description": "Revoke refresh token and clear cookie",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Logout user",
                "parameters": [
                    {
                        "description": "Refresh Token",
                        "name": "refresh_token",
                        "in": "body",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/auth/refresh": {
            "post": {
                "description": "Get a new access token using a valid refresh token",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Refresh access token",
                "parameters": [
                    {
                        "description": "Refresh Token",
                        "name": "refresh_token",
                        "in": "body",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/auth/register": {
            "post": {
                "description": "Register a new user with email, password, name, phone, role and professional type",
                "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/auth.registerRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/auth/upload-url": {
            "post": {
                "description": "Get a pre-signed URL to upload a file directly to S3/Civo",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Get S3 Presigned URL for upload",
                "parameters": [
                    {
                        "description": "Upload URL Request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/auth.uploadURLRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/availability": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "availability"
                ],
                "summary": "List my availability for a month with ?start=YYYY-MM-DD\u0026end=YYYY-MM-DD",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Start Date",
                        "name": "start",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "End Date",
                        "name": "end",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "additionalProperties": true
                            }
                        }
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "availability"
                ],
                "summary": "Set availability for a date",
                "parameters": [
                    {
                        "description": "Availability Input",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/availability.SetAvailabilityInput"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "agenda.CreateAgendaRequest": {
            "type": "object",
            "properties": {
                "cine_faltante": {
                    "type": "integer"
                },
                "data_evento": {
                    "type": "string"
                },
                "endereco": {
                    "type": "string"
                },
                "fot_id": {
                    "type": "string"
                },
                "foto_faltante": {
                    "type": "integer"
                },
                "horario": {
                    "type": "string"
                },
                "local_evento": {
                    "type": "string"
                },
                "logistica_observacoes": {
                    "type": "string"
                },
                "observacoes_evento": {
                    "type": "string"
                },
                "pre_venda": {
                    "type": "boolean"
                },
                "qtd_cinegrafistas": {
                    "type": "integer"
                },
                "qtd_estudios": {
                    "type": "integer"
                },
                "qtd_formandos": {
                    "type": "integer"
                },
                "qtd_fotografos": {
                    "type": "integer"
                },
                "qtd_plataforma_360": {
                    "type": "integer"
                },
                "qtd_ponto_decorado": {
                    "type": "integer"
                },
                "qtd_ponto_foto": {
                    "type": "integer"
                },
                "qtd_ponto_id": {
                    "type": "integer"
                },
                "qtd_pontos_led": {
                    "type": "integer"
                },
                "qtd_recepcionistas": {
                    "type": "integer"
                },
                "recep_faltante": {
                    "type": "integer"
                },
                "status_profissionais": {
                    "type": "string"
                },
                "tipo_evento_id": {
                    "type": "string"
                }
            }
        },
        "anos_formaturas.AnoFormaturaResponse": {
            "type": "object",
            "properties": {
                "ano_semestre": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                }
            }
        },
        "anos_formaturas.CreateAnoFormaturaRequest": {
            "type": "object",
            "required": [
                "ano_semestre"
            ],
            "properties": {
                "ano_semestre": {
                    "type": "string",
                    "example": "2029.1"
                }
            }
        },
        "auth.loginRequest": {
            "type": "object",
            "required": [
                "email",
                "senha"
            ],
            "properties": {
                "email": {
                    "type": "string",
                    "example": "admin@photum.com"
                },
                "senha": {
                    "type": "string",
                    "minLength": 6,
                    "example": "123456"
                }
            }
        },
        "auth.loginResponse": {
            "type": "object",
            "properties": {
                "access_token": {
                    "type": "string"
                },
                "expires_at": {
                    "type": "string"
                },
                "profissional": {},
                "user": {
                    "$ref": "#/definitions/auth.userResponse"
                }
            }
        },
        "auth.registerRequest": {
            "type": "object",
            "required": [
                "email",
                "nome",
                "role",
                "senha"
            ],
            "properties": {
                "email": {
                    "type": "string"
                },
                "empresa_id": {
                    "type": "string"
                },
                "nome": {
                    "type": "string"
                },
                "role": {
                    "type": "string"
                },
                "senha": {
                    "type": "string",
                    "minLength": 6
                },
                "telefone": {
                    "type": "string"
                },
                "tipo_profissional": {
                    "description": "New field",
                    "type": "string"
                }
            }
        },
        "auth.updateRoleRequest": {
            "type": "object",
            "required": [
                "role"
            ],
            "properties": {
                "role": {
                    "type": "string"
                }
            }
        },
        "auth.uploadURLRequest": {
            "type": "object",
            "required": [
                "content_type",
                "filename"
            ],
            "properties": {
                "content_type": {
                    "type": "string"
                },
                "filename": {
                    "type": "string"
                }
            }
        },
        "auth.userResponse": {
            "type": "object",
            "properties": {
                "ativo": {
                    "type": "boolean"
                },
                "company_id": {
                    "type": "string"
                },
                "company_name": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "phone": {
                    "type": "string"
                },
                "role": {
                    "type": "string"
                }
            }
        },
        "availability.SetAvailabilityInput": {
            "type": "object",
            "properties": {
                "date": {
                    "description": "YYYY-MM-DD",
                    "type": "string"
                },
                "status": {
                    "description": "DISPONIVEL, INDISPONIVEL",
                    "type": "string"
                }
            }
        },
        "cadastro_fot.CadastroFotResponse": {
            "type": "object",
            "properties": {
                "ano_formatura_id": {
                    "type": "string"
                },
                "ano_formatura_label": {
                    "type": "string"
                },
                "cidade": {
                    "type": "string"
                },
                "curso_id": {
                    "type": "string"
                },
                "curso_nome": {
                    "type": "string"
                },
                "empresa_id": {
                    "type": "string"
                },
                "empresa_nome": {
                    "type": "string"
                },
                "estado": {
                    "type": "string"
                },
                "fot": {
                    "type": "integer"
                },
                "gastos_captacao": {
                    "type": "number"
                },
                "id": {
                    "type": "string"
                },
                "instituicao": {
                    "type": "string"
                },
                "observacoes": {
                    "type": "string"
                },
                "pre_venda": {
                    "type": "boolean"
                }
            }
        },
        "cadastro_fot.CreateInput": {
            "type": "object",
            "properties": {
                "ano_formatura_id": {
                    "type": "string"
                },
                "cidade": {
                    "type": "string"
                },
                "curso_id": {
                    "type": "string"
                },
                "empresa_id": {
                    "type": "string"
                },
                "estado": {
                    "type": "string"
                },
                "fot": {
                    "type": "integer"
                },
                "gastos_captacao": {
                    "type": "number"
                },
                "instituicao": {
                    "type": "string"
                },
                "observacoes": {
                    "type": "string"
                },
                "pre_venda": {
                    "type": "boolean"
                }
            }
        },
        "codigos.CreateCodigoInput": {
            "type": "object",
            "properties": {
                "codigo": {
                    "type": "string"
                },
                "descricao": {
                    "type": "string"
                },
                "validade_dias": {
                    "type": "integer"
                }
            }
        },
        "cursos.CreateCursoRequest": {
            "type": "object",
            "required": [
                "nome"
            ],
            "properties": {
                "nome": {
                    "type": "string"
                }
            }
        },
        "cursos.CursoResponse": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "nome": {
                    "type": "string"
                }
            }
        },
        "empresas.CreateEmpresaRequest": {
            "type": "object",
            "required": [
                "nome"
            ],
            "properties": {
                "nome": {
                    "type": "string"
                }
            }
        },
        "empresas.EmpresaResponse": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "nome": {
                    "type": "string"
                }
            }
        },
        "escalas.CreateEscalaInput": {
            "type": "object",
            "properties": {
                "agenda_id": {
                    "type": "string"
                },
                "data_hora_fim": {
                    "description": "RFC3339",
                    "type": "string"
                },
                "data_hora_inicio": {
                    "description": "RFC3339",
                    "type": "string"
                },
                "funcao_especifica": {
                    "type": "string"
                },
                "profissional_id": {
                    "type": "string"
                }
            }
        },
        "escalas.UpdateEscalaInput": {
            "type": "object",
            "properties": {
                "data_hora_fim": {
                    "type": "string"
                },
                "data_hora_inicio": {
                    "type": "string"
                },
                "funcao_especifica": {
                    "type": "string"
                },
                "profissional_id": {
                    "type": "string"
                }
            }
        },
        "funcoes.CreateFuncaoRequest": {
            "type": "object",
            "required": [
                "nome"
            ],
            "properties": {
                "nome": {
                    "type": "string"
                }
            }
        },
        "funcoes.FuncaoResponse": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "nome": {
                    "type": "string"
                }
            }
        },
        "profissionais.CreateProfissionalInput": {
            "type": "object",
            "properties": {
                "agencia": {
                    "type": "string"
                },
                "avatar_url": {
                    "type": "string"
                },
                "banco": {
                    "type": "string"
                },
                "carro_disponivel": {
                    "type": "boolean"
                },
                "cidade": {
                    "type": "string"
                },
                "conta_pix": {
                    "type": "string"
                },
                "cpf_cnpj_titular": {
                    "type": "string"
                },
                "desempenho_evento": {
                    "type": "integer"
                },
                "disp_horario": {
                    "type": "integer"
                },
                "educacao_simpatia": {
                    "type": "integer"
                },
                "email": {
                    "type": "string"
                },
                "endereco": {
                    "type": "string"
                },
                "equipamentos": {
                    "type": "string"
                },
                "extra_por_equipamento": {
                    "type": "boolean"
                },
                "funcao_profissional_id": {
                    "type": "string"
                },
                "funcoes_ids": {
                    "description": "New field",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "media": {
                    "type": "number"
                },
                "nome": {
                    "type": "string"
                },
                "observacao": {
                    "type": "string"
                },
                "qtd_estudio": {
                    "type": "integer"
                },
                "qual_tec": {
                    "type": "integer"
                },
                "tabela_free": {
                    "type": "string"
                },
                "target_user_id": {
                    "description": "Optional: For admin creation",
                    "type": "string"
                },
                "tem_estudio": {
                    "type": "boolean"
                },
                "tipo_cartao": {
                    "type": "string"
                },
                "uf": {
                    "type": "string"
                },
                "whatsapp": {
                    "type": "string"
                }
            }
        },
        "profissionais.ProfissionalResponse": {
            "type": "object",
            "properties": {
                "agencia": {
                    "type": "string"
                },
                "avatar_url": {
                    "type": "string"
                },
                "banco": {
                    "type": "string"
                },
                "carro_disponivel": {
                    "type": "boolean"
                },
                "cidade": {
                    "type": "string"
                },
                "conta_pix": {
                    "type": "string"
                },
                "cpf_cnpj_titular": {
                    "type": "string"
                },
                "desempenho_evento": {
                    "type": "integer"
                },
                "disp_horario": {
                    "type": "integer"
                },
                "educacao_simpatia": {
                    "type": "integer"
                },
                "email": {
                    "type": "string"
                },
                "endereco": {
                    "type": "string"
                },
                "equipamentos": {
                    "type": "string"
                },
                "extra_por_equipamento": {
                    "type": "boolean"
                },
                "funcao_profissional": {
                    "description": "Deprecated single name (optional)",
                    "type": "string"
                },
                "funcao_profissional_id": {
                    "type": "string"
                },
                "functions": {
                    "description": "New JSON array"
                },
                "id": {
                    "type": "string"
                },
                "media": {
                    "type": "number"
                },
                "nome": {
                    "type": "string"
                },
                "observacao": {
                    "type": "string"
                },
                "qtd_estudio": {
                    "type": "integer"
                },
                "qual_tec": {
                    "type": "integer"
                },
                "tabela_free": {
                    "type": "string"
                },
                "tem_estudio": {
                    "type": "boolean"
                },
                "tipo_cartao": {
                    "type": "string"
                },
                "uf": {
                    "type": "string"
                },
                "usuario_id": {
                    "type": "string"
                },
                "whatsapp": {
                    "type": "string"
                }
            }
        },
        "profissionais.UpdateProfissionalInput": {
            "type": "object",
            "properties": {
                "agencia": {
                    "type": "string"
                },
                "avatar_url": {
                    "type": "string"
                },
                "banco": {
                    "type": "string"
                },
                "carro_disponivel": {
                    "type": "boolean"
                },
                "cidade": {
                    "type": "string"
                },
                "conta_pix": {
                    "type": "string"
                },
                "cpf_cnpj_titular": {
                    "type": "string"
                },
                "desempenho_evento": {
                    "type": "integer"
                },
                "disp_horario": {
                    "type": "integer"
                },
                "educacao_simpatia": {
                    "type": "integer"
                },
                "email": {
                    "type": "string"
                },
                "endereco": {
                    "type": "string"
                },
                "equipamentos": {
                    "type": "string"
                },
                "extra_por_equipamento": {
                    "type": "boolean"
                },
                "funcao_profissional_id": {
                    "type": "string"
                },
                "funcoes_ids": {
                    "description": "New field",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "media": {
                    "type": "number"
                },
                "nome": {
                    "type": "string"
                },
                "observacao": {
                    "type": "string"
                },
                "qtd_estudio": {
                    "type": "integer"
                },
                "qual_tec": {
                    "type": "integer"
                },
                "tabela_free": {
                    "type": "string"
                },
                "tem_estudio": {
                    "type": "boolean"
                },
                "tipo_cartao": {
                    "type": "string"
                },
                "uf": {
                    "type": "string"
                },
                "whatsapp": {
                    "type": "string"
                }
            }
        },
        "tipos_eventos.CreateEventoRequest": {
            "type": "object",
            "required": [
                "nome"
            ],
            "properties": {
                "nome": {
                    "type": "string"
                }
            }
        },
        "tipos_eventos.EventoResponse": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "nome": {
                    "type": "string"
                },
                "precos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/tipos_eventos.PrecoResponse"
                    }
                }
            }
        },
        "tipos_eventos.PrecoResponse": {
            "type": "object",
            "properties": {
                "funcao_nome": {
                    "type": "string"
                },
                "funcao_profissional_id": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "tipo_evento_id": {
                    "type": "string"
                },
                "valor": {
                    "type": "number"
                }
            }
        },
        "tipos_eventos.PriceInput": {
            "type": "object",
            "properties": {
                "funcao_profissional_id": {
                    "type": "string"
                },
                "tipo_evento_id": {
                    "type": "string"
                },
                "valor": {
                    "type": "number"
                }
            }
        },
        "tipos_servicos.CreateTipoServicoRequest": {
            "type": "object",
            "required": [
                "nome"
            ],
            "properties": {
                "nome": {
                    "type": "string"
                }
            }
        },
        "tipos_servicos.TipoServicoResponse": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "nome": {
                    "type": "string"
                }
            }
        }
    },
    "securityDefinitions": {
        "BearerAuth": {
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        }
    },
    "tags": [
        {
            "description": "Authentication related operations",
            "name": "auth"
        },
        {
            "description": "Administration operations",
            "name": "admin"
        }
    ]
}