basePath: /
definitions:
  auth.loginRequest:
    properties:
      email:
        type: string
      senha:
        type: string
    required:
    - email
    - senha
    type: object
  auth.loginResponse:
    properties:
      access_token:
        type: string
      expires_at:
        type: string
      profissional: {}
      user:
        $ref: '#/definitions/auth.userResponse'
    type: object
  auth.registerRequest:
    properties:
      email:
        type: string
      profissional_data:
        $ref: '#/definitions/profissionais.CreateProfissionalInput'
      role:
        enum:
        - profissional
        - empresa
        type: string
      senha:
        minLength: 6
        type: string
    required:
    - email
    - role
    - senha
    type: object
  auth.userResponse:
    properties:
      email:
        type: string
      id:
        type: string
      role:
        type: string
    type: object
  funcoes.FuncaoResponse:
    properties:
      id:
        type: string
      nome:
        type: string
    type: object
  profissionais.CreateProfissionalInput:
    properties:
      agencia:
        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
      endereco:
        type: string
      equipamentos:
        type: string
      extra_por_equipamento:
        type: boolean
      funcao_profissional_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
      whatsapp:
        type: string
    type: object
  profissionais.ProfissionalResponse:
    properties:
      agencia:
        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
      endereco:
        type: string
      equipamentos:
        type: string
      extra_por_equipamento:
        type: boolean
      funcao_profissional:
        description: Now returns name from join
        type: string
      funcao_profissional_id:
        type: string
      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
    type: object
  profissionais.UpdateProfissionalInput:
    properties:
      agencia:
        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
      endereco:
        type: string
      equipamentos:
        type: string
      extra_por_equipamento:
        type: boolean
      funcao_profissional_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
      whatsapp:
        type: string
    type: object
host: localhost:8080
info:
  contact:
    email: support@swagger.io
    name: API Support
    url: http://www.swagger.io/support
  description: Backend authentication service for Photum.
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: http://swagger.io/terms/
  title: Photum Backend API
  version: "1.0"
paths:
  /api/funcoes:
    get:
      consumes:
      - application/json
      description: List all professional functions
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/funcoes.FuncaoResponse'
            type: array
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - BearerAuth: []
      summary: List functions
      tags:
      - funcoes
    post:
      consumes:
      - application/json
      description: Create a new professional function
      parameters:
      - description: Create Function Request
        in: body
        name: request
        required: true
        schema:
          additionalProperties:
            type: string
          type: object
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            $ref: '#/definitions/funcoes.FuncaoResponse'
        "400":
          description: Bad Request
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - BearerAuth: []
      summary: Create a new function
      tags:
      - funcoes
  /api/funcoes/{id}:
    delete:
      consumes:
      - application/json
      description: Delete a professional function by ID
      parameters:
      - description: Function ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties:
              type: string
            type: object
        "400":
          description: Bad Request
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - BearerAuth: []
      summary: Delete function
      tags:
      - funcoes
    put:
      consumes:
      - application/json
      description: Update a professional function by ID
      parameters:
      - description: Function ID
        in: path
        name: id
        required: true
        type: string
      - description: Update Function Request
        in: body
        name: request
        required: true
        schema:
          additionalProperties:
            type: string
          type: object
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/funcoes.FuncaoResponse'
        "400":
          description: Bad Request
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - BearerAuth: []
      summary: Update function
      tags:
      - funcoes
  /api/profissionais:
    get:
      consumes:
      - application/json
      description: List all profissionais
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/profissionais.ProfissionalResponse'
            type: array
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - BearerAuth: []
      summary: List profissionais
      tags:
      - profissionais
    post:
      consumes:
      - application/json
      description: Create a new profissional record
      parameters:
      - description: Create Profissional Request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/profissionais.CreateProfissionalInput'
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            $ref: '#/definitions/profissionais.ProfissionalResponse'
        "400":
          description: Bad Request
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - BearerAuth: []
      summary: Create a new profissional
      tags:
      - profissionais
  /api/profissionais/{id}:
    delete:
      consumes:
      - application/json
      description: Delete a profissional by ID
      parameters:
      - description: Profissional ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties:
              type: string
            type: object
        "400":
          description: Bad Request
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - BearerAuth: []
      summary: Delete profissional
      tags:
      - profissionais
    get:
      consumes:
      - application/json
      description: Get a profissional by ID
      parameters:
      - description: Profissional ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/profissionais.ProfissionalResponse'
        "400":
          description: Bad Request
          schema:
            additionalProperties:
              type: string
            type: object
        "404":
          description: Not Found
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - BearerAuth: []
      summary: Get profissional by ID
      tags:
      - profissionais
    put:
      consumes:
      - application/json
      description: Update a profissional by ID
      parameters:
      - description: Profissional ID
        in: path
        name: id
        required: true
        type: string
      - description: Update Profissional Request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/profissionais.UpdateProfissionalInput'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/profissionais.ProfissionalResponse'
        "400":
          description: Bad Request
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - BearerAuth: []
      summary: Update profissional
      tags:
      - profissionais
  /auth/login:
    post:
      consumes:
      - application/json
      description: Login with email and password
      parameters:
      - description: Login Request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/auth.loginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/auth.loginResponse'
        "401":
          description: Unauthorized
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Login
      tags:
      - auth
  /auth/logout:
    post:
      consumes:
      - application/json
      description: Revoke refresh token and clear cookie
      parameters:
      - description: Refresh Token
        in: body
        name: refresh_token
        schema:
          type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Logout user
      tags:
      - auth
  /auth/refresh:
    post:
      consumes:
      - application/json
      description: Get a new access token using a valid refresh token
      parameters:
      - description: Refresh Token
        in: body
        name: refresh_token
        schema:
          type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties: true
            type: object
        "401":
          description: Unauthorized
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Refresh access token
      tags:
      - auth
  /auth/register:
    post:
      consumes:
      - application/json
      description: Register a new user with optional professional profile
      parameters:
      - description: Register Request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/auth.registerRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            additionalProperties:
              type: string
            type: object
        "400":
          description: Bad Request
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal Server Error
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Register a new user
      tags:
      - auth
securityDefinitions:
  BearerAuth:
    in: header
    name: Authorization
    type: apiKey
swagger: "2.0"
