photum/backend/docs/swagger.yaml
NANDO9322 20b60fcc27 feat(agenda): implementar sistema de conflito por tempo e horário de término
- db: criada migration para adicionar coluna `horario_fim` na tabela agenda
- backend: queries SQLC atualizadas para ler e gravar horario_fim
- backend: mapeamento no service.go modificado para incluir e retornar o horário
- backend: atualizada documentação das rotas (Swagger)
- frontend/ui: adicionado campo de input Horário de Término no EventForm
- frontend/ui: painéis do Dashboard e DailyLogistics renderizando o novo formato visual de exibição de horas do evento
- frontend/logic: atualizada validação de profissionais ocupados (busyProfessionalIds) para analisar colisão real com base no intervalo Início x Fim em vez do fechamento total do dia
- frontend/context: conserto no state global do DataContext para não perder a string do backend após edições via modal
2026-02-25 11:38:37 -03:00

2755 lines
62 KiB
YAML

basePath: /
definitions:
agenda.ContactInfo:
properties:
name:
type: string
phone:
type: string
role:
type: string
type: object
agenda.CreateAgendaRequest:
properties:
cine_faltante:
type: integer
contatos:
items:
$ref: '#/definitions/agenda.ContactInfo'
type: array
data_evento:
type: string
endereco:
type: string
fot_id:
type: string
foto_faltante:
type: integer
horario:
type: string
horario_fim:
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
type: object
agenda.FinancialStatementResponse:
properties:
pagamentos_confirmados:
type: number
pagamentos_pendentes:
type: number
total_recebido:
type: number
transactions:
items:
$ref: '#/definitions/agenda.FinancialTransactionDTO'
type: array
type: object
agenda.FinancialTransactionDTO:
properties:
data_evento:
type: string
data_pagamento:
type: string
descricao_extra:
type: string
empresa:
type: string
id:
type: string
nome_evento:
description: Fot + Tipo
type: string
status:
type: string
tipo_evento:
type: string
valor_extra:
type: number
valor_free:
type: number
valor_recebido:
type: number
type: object
anos_formaturas.AnoFormaturaResponse:
properties:
ano_semestre:
type: string
id:
type: string
type: object
anos_formaturas.CreateAnoFormaturaRequest:
properties:
ano_semestre:
example: "2029.1"
type: string
required:
- ano_semestre
type: object
auth.loginRequest:
properties:
email:
example: admin@photum.com
type: string
senha:
example: "123456"
minLength: 6
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:
bairro:
type: string
cep:
type: string
cidade:
type: string
complemento:
type: string
cpf_cnpj:
type: string
email:
type: string
empresa_id:
type: string
endereco:
type: string
estado:
type: string
nome:
type: string
numero:
type: string
professional_type:
type: string
regiao:
type: string
role:
type: string
senha:
minLength: 6
type: string
telefone:
type: string
required:
- email
- nome
- role
- senha
type: object
auth.updateRoleRequest:
properties:
role:
type: string
required:
- role
type: object
auth.uploadURLRequest:
properties:
content_type:
type: string
filename:
type: string
required:
- content_type
- filename
type: object
auth.userResponse:
properties:
allowed_regions:
items:
type: string
type: array
ativo:
type: boolean
bairro:
type: string
cep:
type: string
cidade:
type: string
company_id:
type: string
company_name:
type: string
complemento:
type: string
cpf_cnpj:
type: string
email:
type: string
endereco:
type: string
estado:
type: string
id:
type: string
name:
type: string
numero:
type: string
phone:
type: string
role:
type: string
type: object
availability.SetAvailabilityInput:
properties:
date:
description: YYYY-MM-DD
type: string
status:
description: DISPONIVEL, INDISPONIVEL
type: string
type: object
cadastro_fot.CadastroFotResponse:
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
finalizada:
type: boolean
fot:
type: string
gastos_captacao:
type: number
id:
type: string
instituicao:
type: string
observacoes:
type: string
pre_venda:
type: boolean
type: object
cadastro_fot.CreateInput:
properties:
ano_formatura_id:
type: string
cidade:
type: string
curso_id:
type: string
empresa_id:
type: string
estado:
type: string
fot:
type: string
gastos_captacao:
type: number
instituicao:
type: string
observacoes:
type: string
pre_venda:
type: boolean
type: object
cadastro_fot.ImportInput:
properties:
ano_formatura_label:
type: string
cidade:
type: string
curso_nome:
type: string
empresa_nome:
type: string
estado:
type: string
fot:
type: string
gastos_captacao:
type: number
instituicao:
type: string
observacoes:
type: string
pre_venda:
type: boolean
type: object
cadastro_fot.ImportResult:
properties:
errors:
items:
type: string
type: array
successCount:
type: integer
type: object
codigos.CreateCodigoInput:
properties:
codigo:
type: string
descricao:
type: string
empresa_id:
type: string
regiao:
description: From context/header
type: string
validade_dias:
type: integer
type: object
cursos.CreateCursoRequest:
properties:
nome:
type: string
required:
- nome
type: object
cursos.CursoResponse:
properties:
id:
type: string
nome:
type: string
type: object
empresas.CreateEmpresaRequest:
properties:
nome:
type: string
required:
- nome
type: object
empresas.EmpresaResponse:
properties:
id:
type: string
nome:
type: string
type: object
escalas.CreateEscalaInput:
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
type: object
escalas.UpdateEscalaInput:
properties:
data_hora_fim:
type: string
data_hora_inicio:
type: string
funcao_especifica:
type: string
profissional_id:
type: string
type: object
funcoes.CreateFuncaoRequest:
properties:
nome:
type: string
required:
- nome
type: object
funcoes.FuncaoResponse:
properties:
id:
type: string
nome:
type: string
type: object
profissionais.CreateProfissionalInput:
properties:
agencia:
type: string
avatar_url:
type: string
bairro:
type: string
banco:
type: string
carro_disponivel:
type: boolean
cep:
type: string
cidade:
type: string
complemento:
type: string
conta:
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
items:
type: string
type: array
media:
type: number
nome:
type: string
numero:
type: string
observacao:
type: string
qtd_estudio:
type: integer
qual_tec:
type: integer
regiao:
description: 'Optional: Override region'
type: string
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
type: object
profissionais.ImportStats:
properties:
created:
type: integer
errors:
type: integer
updated:
type: integer
type: object
profissionais.ProfissionalResponse:
properties:
agencia:
type: string
avatar_url:
type: string
bairro:
type: string
banco:
type: string
carro_disponivel:
type: boolean
cep:
type: string
cidade:
type: string
complemento:
type: string
conta:
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: JSON array
items:
type: object
type: array
id:
type: string
media:
type: number
nome:
type: string
numero:
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
avatar_url:
type: string
bairro:
type: string
banco:
type: string
carro_disponivel:
type: boolean
cep:
type: string
cidade:
type: string
complemento:
type: string
conta:
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:
items:
type: string
type: array
media:
type: number
nome:
type: string
numero:
type: string
observacao:
type: string
qtd_estudio:
type: integer
qual_tec:
type: integer
senha:
description: New field for password update
type: string
tabela_free:
type: string
tem_estudio:
type: boolean
tipo_cartao:
type: string
uf:
type: string
whatsapp:
type: string
type: object
tipos_eventos.CreateEventoRequest:
properties:
nome:
type: string
required:
- nome
type: object
tipos_eventos.EventoResponse:
properties:
id:
type: string
nome:
type: string
precos:
items:
$ref: '#/definitions/tipos_eventos.PrecoResponse'
type: array
type: object
tipos_eventos.PrecoResponse:
properties:
funcao_nome:
type: string
funcao_profissional_id:
type: string
id:
type: string
tipo_evento_id:
type: string
valor:
type: number
type: object
tipos_eventos.PriceInput:
properties:
funcao_profissional_id:
type: string
tipo_evento_id:
type: string
valor:
type: number
type: object
tipos_servicos.CreateTipoServicoRequest:
properties:
nome:
type: string
required:
- nome
type: object
tipos_servicos.TipoServicoResponse:
properties:
id:
type: string
nome:
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/admin/users:
get:
consumes:
- application/json
description: List all users (Admin only)
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
additionalProperties: true
type: object
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: List all users
tags:
- admin
post:
consumes:
- application/json
description: Create a new user with specific role (Admin only)
parameters:
- description: Create User 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
security:
- BearerAuth: []
summary: Create user (Admin)
tags:
- admin
/api/admin/users/{id}:
delete:
consumes:
- application/json
description: Delete user (Admin only)
parameters:
- description: User 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 user
tags:
- admin
get:
consumes:
- application/json
description: Get user details by ID (Admin only)
parameters:
- description: User ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"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 user by ID
tags:
- admin
/api/admin/users/{id}/approve:
patch:
consumes:
- application/json
description: Set user ativo=true
parameters:
- description: User 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: Approve user
tags:
- admin
/api/admin/users/{id}/role:
patch:
consumes:
- application/json
description: Update user role (Admin only)
parameters:
- description: User ID
in: path
name: id
required: true
type: string
- description: Update Role Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/auth.updateRoleRequest'
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: Update user role
tags:
- admin
/api/admin/users/pending:
get:
consumes:
- application/json
description: List users with ativo=false
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
additionalProperties: true
type: object
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: List pending users
tags:
- admin
/api/agenda:
get:
consumes:
- application/json
description: List all agenda events with details
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
additionalProperties: true
type: object
type: array
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: List all agenda events
tags:
- agenda
post:
consumes:
- application/json
description: Create a new agenda event
parameters:
- description: Create Agenda Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/agenda.CreateAgendaRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Create a new agenda event
tags:
- agenda
/api/agenda/{id}:
delete:
consumes:
- application/json
description: Delete agenda event by ID
parameters:
- description: Agenda ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Delete agenda event
tags:
- agenda
get:
consumes:
- application/json
description: Get agenda event details by ID
parameters:
- description: Agenda ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get agenda event by ID
tags:
- agenda
put:
consumes:
- application/json
description: Update agenda event by ID
parameters:
- description: Agenda ID
in: path
name: id
required: true
type: string
- description: Update Agenda Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/agenda.CreateAgendaRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Update agenda event
tags:
- agenda
/api/agenda/{id}/available:
get:
responses: {}
summary: List available professionals for agenda date
tags:
- agenda
/api/agenda/{id}/notify-logistics:
post:
responses: {}
summary: Send logistics notification to all professionals
tags:
- agenda
/api/agenda/{id}/professionals:
post:
responses: {}
summary: Assign professional to agenda
tags:
- agenda
/api/agenda/{id}/professionals/{profId}:
delete:
responses: {}
summary: Remove professional from agenda
tags:
- agenda
/api/agenda/{id}/professionals/{profId}/coordinator:
put:
responses: {}
summary: Set professional as coordinator
tags:
- agenda
/api/agenda/{id}/professionals/{profId}/position:
patch:
responses: {}
summary: Update professional position in agenda
tags:
- agenda
/api/agenda/{id}/professionals/{profId}/status:
patch:
responses: {}
summary: Update professional assignment status
tags:
- agenda
/api/agenda/{id}/status:
patch:
responses: {}
summary: Update agenda status
tags:
- agenda
/api/anos-formaturas:
get:
consumes:
- application/json
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/anos_formaturas.AnoFormaturaResponse'
type: array
security:
- BearerAuth: []
summary: List all graduation years
tags:
- anos_formaturas
post:
consumes:
- application/json
parameters:
- description: Ano Semestre
in: body
name: request
required: true
schema:
$ref: '#/definitions/anos_formaturas.CreateAnoFormaturaRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/anos_formaturas.AnoFormaturaResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"409":
description: Conflict
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Create a new graduation year
tags:
- anos_formaturas
/api/anos-formaturas/{id}:
delete:
consumes:
- application/json
parameters:
- description: ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
security:
- BearerAuth: []
summary: Delete a graduation year
tags:
- anos_formaturas
put:
consumes:
- application/json
parameters:
- description: ID
in: path
name: id
required: true
type: string
- description: Ano Semestre
in: body
name: request
required: true
schema:
$ref: '#/definitions/anos_formaturas.CreateAnoFormaturaRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/anos_formaturas.AnoFormaturaResponse'
security:
- BearerAuth: []
summary: Update a graduation year
tags:
- anos_formaturas
/api/cadastro-fot:
get:
consumes:
- application/json
parameters:
- description: Filter by Company ID
in: query
name: empresa_id
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/cadastro_fot.CadastroFotResponse'
type: array
security:
- BearerAuth: []
summary: List all FOT records
tags:
- cadastro_fot
post:
consumes:
- application/json
parameters:
- description: FOT Data
in: body
name: request
required: true
schema:
$ref: '#/definitions/cadastro_fot.CreateInput'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/cadastro_fot.CadastroFotResponse'
security:
- BearerAuth: []
summary: Create a new FOT record
tags:
- cadastro_fot
/api/cadastro-fot/{id}:
delete:
consumes:
- application/json
parameters:
- description: ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
security:
- BearerAuth: []
summary: Delete FOT record
tags:
- cadastro_fot
get:
consumes:
- application/json
parameters:
- description: ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/cadastro_fot.CadastroFotResponse'
security:
- BearerAuth: []
summary: Get FOT record by ID
tags:
- cadastro_fot
put:
consumes:
- application/json
parameters:
- description: ID
in: path
name: id
required: true
type: string
- description: Data
in: body
name: request
required: true
schema:
$ref: '#/definitions/cadastro_fot.CreateInput'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/cadastro_fot.CadastroFotResponse'
security:
- BearerAuth: []
summary: Update FOT record
tags:
- cadastro_fot
/api/cadastro-fot/{id}/finalize:
post:
consumes:
- application/json
parameters:
- description: ID
in: path
name: id
required: true
type: string
- description: Status
in: body
name: status
required: true
schema:
properties:
finalizada:
type: boolean
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/cadastro_fot.CadastroFotResponse'
security:
- BearerAuth: []
summary: Toggle FOT finalized status
tags:
- cadastro_fot
/api/codigos-acesso:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
additionalProperties: true
type: object
type: array
summary: List Access Codes
tags:
- codigos
post:
consumes:
- application/json
parameters:
- description: Req
in: body
name: req
required: true
schema:
$ref: '#/definitions/codigos.CreateCodigoInput'
produces:
- application/json
responses:
"201":
description: Created
schema:
additionalProperties: true
type: object
summary: Create Access Code
tags:
- codigos
/api/codigos-acesso/{id}:
delete:
parameters:
- description: ID
in: path
name: id
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
summary: Delete Access Code
tags:
- codigos
/api/cursos:
get:
consumes:
- application/json
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/cursos.CursoResponse'
type: array
security:
- BearerAuth: []
summary: List all courses
tags:
- cursos
post:
consumes:
- application/json
parameters:
- description: Curso Name
in: body
name: request
required: true
schema:
$ref: '#/definitions/cursos.CreateCursoRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/cursos.CursoResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"409":
description: Conflict
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Create a new course
tags:
- cursos
/api/cursos/{id}:
delete:
consumes:
- application/json
parameters:
- description: Curso ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
security:
- BearerAuth: []
summary: Delete a course
tags:
- cursos
put:
consumes:
- application/json
parameters:
- description: Curso ID
in: path
name: id
required: true
type: string
- description: Curso Name
in: body
name: request
required: true
schema:
$ref: '#/definitions/cursos.CreateCursoRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/cursos.CursoResponse'
security:
- BearerAuth: []
summary: Update a course
tags:
- cursos
/api/empresas:
get:
consumes:
- application/json
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/empresas.EmpresaResponse'
type: array
security:
- BearerAuth: []
summary: List all companies
tags:
- empresas
post:
consumes:
- application/json
parameters:
- description: Empresa Name
in: body
name: request
required: true
schema:
$ref: '#/definitions/empresas.CreateEmpresaRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/empresas.EmpresaResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"409":
description: Conflict
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Create a new company
tags:
- empresas
/api/empresas/{id}:
delete:
consumes:
- application/json
parameters:
- description: Empresa ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
security:
- BearerAuth: []
summary: Delete a company
tags:
- empresas
put:
consumes:
- application/json
parameters:
- description: Empresa ID
in: path
name: id
required: true
type: string
- description: Empresa Name
in: body
name: request
required: true
schema:
$ref: '#/definitions/empresas.CreateEmpresaRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/empresas.EmpresaResponse'
security:
- BearerAuth: []
summary: Update a company
tags:
- empresas
/api/escalas:
get:
consumes:
- application/json
description: Get all schedule entries for a specific agenda_id
parameters:
- description: Agenda ID
in: query
name: agenda_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
additionalProperties: true
type: object
type: array
summary: List schedules for an event
tags:
- escalas
post:
consumes:
- application/json
description: Assign a professional to a time block in an event
parameters:
- description: Create Escala
in: body
name: request
required: true
schema:
$ref: '#/definitions/escalas.CreateEscalaInput'
produces:
- application/json
responses:
"201":
description: Created
schema:
additionalProperties:
type: string
type: object
summary: Create a schedule entry
tags:
- escalas
/api/escalas/{id}:
delete:
consumes:
- application/json
description: Remove a professional from a time block
parameters:
- description: Escala ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
summary: Delete a schedule entry
tags:
- escalas
put:
consumes:
- application/json
description: Update time or professional for a slot
parameters:
- description: Escala ID
in: path
name: id
required: true
type: string
- description: Update Escala
in: body
name: request
required: true
schema:
$ref: '#/definitions/escalas.UpdateEscalaInput'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
summary: Update a schedule entry
tags:
- escalas
/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
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:
$ref: '#/definitions/funcoes.CreateFuncaoRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/funcoes.FuncaoResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"409":
description: Conflict
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:
$ref: '#/definitions/funcoes.CreateFuncaoRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/funcoes.FuncaoResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"409":
description: Conflict
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/import/agenda:
post:
responses: {}
summary: Import agenda events from Excel/JSON
tags:
- agenda
/api/import/fot:
post:
consumes:
- application/json
parameters:
- description: List of FOTs
in: body
name: request
required: true
schema:
items:
$ref: '#/definitions/cadastro_fot.ImportInput'
type: array
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/cadastro_fot.ImportResult'
security:
- BearerAuth: []
summary: Import FOT data
tags:
- cadastro_fot
/api/me:
get:
consumes:
- application/json
description: Get current authenticated user
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/auth.loginResponse'
summary: Get current user
tags:
- auth
put:
consumes:
- application/json
description: Update profile information (Name, Phone, Address). Currently for
EVENT_OWNER.
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
summary: Update current user profile
tags:
- auth
/api/professionals/me/financial-statement:
get:
consumes:
- application/json
description: Get financial statement for the logged-in professional
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/agenda.FinancialStatementResponse'
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get professional financial statement
tags:
- agenda
/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
/api/profissionais/import:
post:
consumes:
- application/json
description: Import professionals (Upsert by CPF)
parameters:
- description: List of Professionals
in: body
name: request
required: true
schema:
items:
$ref: '#/definitions/profissionais.CreateProfissionalInput'
type: array
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/profissionais.ImportStats'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Import professionals from properties
tags:
- profissionais
/api/profissionais/me:
get:
consumes:
- application/json
description: Get the profissional profile associated with the current user
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/profissionais.ProfissionalResponse'
"401":
description: Unauthorized
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 current authenticated profissional
tags:
- profissionais
/api/public/codigos-acesso/verificar:
get:
parameters:
- description: Code
in: query
name: code
required: true
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: boolean
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
summary: Verify Access Code
tags:
- codigos
/api/public/profissionais/check:
get:
consumes:
- application/json
description: Check existence and claim status
parameters:
- description: CPF/CNPJ
in: query
name: cpf
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
summary: Check if professional exists by CPF
tags:
- profissionais
/api/tipos-eventos:
get:
consumes:
- application/json
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/tipos_eventos.EventoResponse'
type: array
security:
- BearerAuth: []
summary: List all event types
tags:
- tipos_eventos
post:
consumes:
- application/json
parameters:
- description: Nome
in: body
name: request
required: true
schema:
$ref: '#/definitions/tipos_eventos.CreateEventoRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/tipos_eventos.EventoResponse'
security:
- BearerAuth: []
summary: Create a new event type
tags:
- tipos_eventos
/api/tipos-eventos/{id}:
delete:
consumes:
- application/json
parameters:
- description: Event ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
security:
- BearerAuth: []
summary: Delete an event type
tags:
- tipos_eventos
put:
consumes:
- application/json
parameters:
- description: Event ID
in: path
name: id
required: true
type: string
- description: Event Data
in: body
name: request
required: true
schema:
$ref: '#/definitions/tipos_eventos.CreateEventoRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/tipos_eventos.EventoResponse'
security:
- BearerAuth: []
summary: Update an event type
tags:
- tipos_eventos
/api/tipos-eventos/{id}/precos:
get:
consumes:
- application/json
parameters:
- description: Event ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/tipos_eventos.PrecoResponse'
type: array
security:
- BearerAuth: []
summary: List prices for an event
tags:
- tipos_eventos
/api/tipos-eventos/precos:
post:
consumes:
- application/json
parameters:
- description: Price Input
in: body
name: request
required: true
schema:
$ref: '#/definitions/tipos_eventos.PriceInput'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Set price for an event function
tags:
- tipos_eventos
/api/tipos-servicos:
get:
consumes:
- application/json
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/tipos_servicos.TipoServicoResponse'
type: array
security:
- BearerAuth: []
summary: List all service types
tags:
- tipos_servicos
post:
consumes:
- application/json
parameters:
- description: Nome
in: body
name: request
required: true
schema:
$ref: '#/definitions/tipos_servicos.CreateTipoServicoRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/tipos_servicos.TipoServicoResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"409":
description: Conflict
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Create a new service type
tags:
- tipos_servicos
/api/tipos-servicos/{id}:
delete:
consumes:
- application/json
parameters:
- description: ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
security:
- BearerAuth: []
summary: Delete a service type
tags:
- tipos_servicos
put:
consumes:
- application/json
parameters:
- description: ID
in: path
name: id
required: true
type: string
- description: Nome
in: body
name: request
required: true
schema:
$ref: '#/definitions/tipos_servicos.CreateTipoServicoRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/tipos_servicos.TipoServicoResponse'
security:
- BearerAuth: []
summary: Update a service type
tags:
- tipos_servicos
/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 email, password, name, phone, role and
professional type
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
/auth/upload-url:
post:
consumes:
- application/json
description: Get a pre-signed URL to upload a file directly to S3/Civo
parameters:
- description: Upload URL Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/auth.uploadURLRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
summary: Get S3 Presigned URL for upload
tags:
- auth
/availability:
get:
parameters:
- description: Start Date
in: query
name: start
required: true
type: string
- description: End Date
in: query
name: end
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
additionalProperties: true
type: object
type: array
summary: List my availability for a month with ?start=YYYY-MM-DD&end=YYYY-MM-DD
tags:
- availability
post:
consumes:
- application/json
parameters:
- description: Availability Input
in: body
name: request
required: true
schema:
$ref: '#/definitions/availability.SetAvailabilityInput'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
summary: Set availability for a date
tags:
- availability
securityDefinitions:
BearerAuth:
in: header
name: Authorization
type: apiKey
swagger: "2.0"
tags:
- description: Authentication related operations
name: auth
- description: Administration operations
name: admin