{"openapi":"3.1.0","info":{"title":"OdontoControl - API Externa","version":"1.0.0-preview","description":"Referencia publica para integracoes externas com pacientes, profissionais, procedimentos, consultas, disponibilidade, tratamentos, orcamentos e financeiro. Gere o token da clinica em Configuracoes > API e use esta documentacao como contrato operacional da API externa v1."},"servers":[{"url":"https://odonto.nortweb.com.br/api/external/v1","description":"Produção"}],"security":[{"bearerAuth":[]},{"xApiKey":[]}],"tags":[{"name":"Autenticacao","description":"Validacao da API key e introspeccao da clinica vinculada ao token."},{"name":"Pacientes","description":"Cadastro, leitura, historico clinico e relacionamentos do paciente."},{"name":"Profissionais","description":"Cadastro e manutencao do corpo clinico."},{"name":"Procedimentos","description":"Catalogo de procedimentos e valores de referencia."},{"name":"Consultas","description":"Agenda, consultas e atualizacao de status operacional."},{"name":"Disponibilidade","description":"Janelas de horarios livres para agenda externa."},{"name":"Tratamentos","description":"Planos e execucao de tratamentos por paciente."},{"name":"Orcamentos","description":"Propostas, itens, aprovacao e negociacao."},{"name":"Financeiro","description":"Lancamentos de receita e despesa relacionados a clinica."}],"paths":{"/me":{"get":{"tags":["Autenticacao"],"summary":"[Disponivel] Validar token e identificar clinica","description":"Endpoint de teste rapido para confirmar autenticacao, escopos do token e a clinica vinculada.","operationId":"externalMe","responses":{"200":{"description":"Token valido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalMeResponse"},"examples":{"default":{"value":{"ok":true,"clinic":{"id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Clinica Sorriso","slug":"clinica-sorriso"},"token":{"id":"a5a0a1f4-842d-40d2-bd6a-2a44e1e16c8c","nome":"ERP principal","prefix":"odonto_live_ab12cd34ef56","scopes":["pacientes.read","consultas.read"]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}},"/pacientes":{"get":{"tags":["Pacientes"],"summary":"[Disponivel] Listar pacientes","description":"Retorna pacientes da clinica com filtros por identificacao, convenio e status. Contrato recomendado para integradores externos.","operationId":"listPacientes","parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"$ref":"#/components/parameters/SortBy"},{"$ref":"#/components/parameters/SortOrder"},{"$ref":"#/components/parameters/UpdatedAfter"},{"name":"nome","in":"query","schema":{"type":"string"},"description":"Busca parcial por nome."},{"name":"cpf","in":"query","schema":{"type":"string"},"description":"CPF exato do paciente."},{"name":"telefone","in":"query","schema":{"type":"string"},"description":"Telefone exato ou parcial."},{"name":"email","in":"query","schema":{"type":"string","format":"email"}},{"name":"convenio","in":"query","schema":{"type":"string"}},{"name":"ativo","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Lista paginada de pacientes.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Paciente"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Maria da Silva","cpf":"12345678900","rg":"1234567","data_nascimento":"1990-04-02","telefone":"11999990000","email":"maria@email.com","endereco":{"cep":"01310000","rua":"Avenida Paulista","numero":"1000","complemento":"Sala 12","bairro":"Bela Vista","cidade":"Sao Paulo","estado":"SP"},"profissao":"Professora","convenio":"Unimed","numero_convenio":"ABC123","foto_url":null,"alergias":["Dipirona"],"medicamentos_uso":["Losartana"],"doencas_preexistentes":"Hipertensao","observacoes_anamnese":"Paciente relata sensibilidade dentaria","ativo":true,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"}}},"post":{"tags":["Pacientes"],"summary":"[Disponivel] Criar paciente","description":"Cadastra um novo paciente na clinica. Recomendado para integrações com site, chatbot ou ERP.","operationId":"createPaciente","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PacienteCreateInput"},"examples":{"default":{"value":{"nome":"Maria da Silva","cpf":"12345678900","telefone":"11999990000","email":"maria@email.com","data_nascimento":"1990-04-02","convenio":"Unimed","numero_convenio":"ABC123","alergias":["Dipirona"],"medicamentos_uso":["Losartana"],"doencas_preexistentes":"Hipertensao","observacoes_anamnese":"Paciente relata sensibilidade dentaria","ativo":true}}}}}},"responses":{"201":{"description":"Paciente criado com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Paciente"}}},"examples":{"created":{"value":{"data":{"id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Maria da Silva","cpf":"12345678900","rg":"1234567","data_nascimento":"1990-04-02","telefone":"11999990000","email":"maria@email.com","endereco":{"cep":"01310000","rua":"Avenida Paulista","numero":"1000","complemento":"Sala 12","bairro":"Bela Vista","cidade":"Sao Paulo","estado":"SP"},"profissao":"Professora","convenio":"Unimed","numero_convenio":"ABC123","foto_url":null,"alergias":["Dipirona"],"medicamentos_uso":["Losartana"],"doencas_preexistentes":"Hipertensao","observacoes_anamnese":"Paciente relata sensibilidade dentaria","ativo":true,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"}}}},"/pacientes/{pacienteId}":{"get":{"tags":["Pacientes"],"summary":"[Disponivel] Buscar paciente por ID","operationId":"getPaciente","parameters":[{"$ref":"#/components/parameters/PacienteId"}],"responses":{"200":{"description":"Paciente localizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Paciente"}}},"examples":{"default":{"value":{"data":{"id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Maria da Silva","cpf":"12345678900","rg":"1234567","data_nascimento":"1990-04-02","telefone":"11999990000","email":"maria@email.com","endereco":{"cep":"01310000","rua":"Avenida Paulista","numero":"1000","complemento":"Sala 12","bairro":"Bela Vista","cidade":"Sao Paulo","estado":"SP"},"profissao":"Professora","convenio":"Unimed","numero_convenio":"ABC123","foto_url":null,"alergias":["Dipirona"],"medicamentos_uso":["Losartana"],"doencas_preexistentes":"Hipertensao","observacoes_anamnese":"Paciente relata sensibilidade dentaria","ativo":true,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"patch":{"tags":["Pacientes"],"summary":"[Disponivel] Atualizar paciente","description":"Atualizacao parcial. Para inativar, prefira enviar `ativo=false`.","operationId":"updatePaciente","parameters":[{"$ref":"#/components/parameters/PacienteId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PacienteUpdateInput"}}}},"responses":{"200":{"description":"Paciente atualizado com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Paciente"}}},"examples":{"created":{"value":{"data":{"id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Maria da Silva","cpf":"12345678900","rg":"1234567","data_nascimento":"1990-04-02","telefone":"11998887766","email":"maria@email.com","endereco":{"cep":"01310000","rua":"Avenida Paulista","numero":"1000","complemento":"Sala 12","bairro":"Bela Vista","cidade":"Sao Paulo","estado":"SP"},"profissao":"Professora","convenio":"Unimed","numero_convenio":"ABC123","foto_url":null,"alergias":["Dipirona"],"medicamentos_uso":["Losartana"],"doencas_preexistentes":"Hipertensao","observacoes_anamnese":"Paciente relata sensibilidade dentaria","ativo":true,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T15:10:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"delete":{"tags":["Pacientes"],"summary":"[Disponivel] Excluir paciente","description":"Endpoint administrativo. Para integrações comuns, prefira inativar o paciente via PATCH.","operationId":"deletePaciente","parameters":[{"$ref":"#/components/parameters/PacienteId"}],"responses":{"204":{"description":"Paciente excluido."},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/pacientes/{pacienteId}/consultas":{"get":{"tags":["Pacientes"],"summary":"[Disponivel] Listar consultas do paciente","operationId":"listConsultasByPaciente","parameters":[{"$ref":"#/components/parameters/PacienteId"},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusConsultaEnum"}},{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Consultas vinculadas ao paciente.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Consulta"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"7d8d5e35-1ce5-42c4-b84d-9df4f2f41ba4","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","data":"2026-06-20","hora":"09:30","duracao_minutos":60,"tipo":"consulta","status":"agendada","procedimentos":[{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","valor":900,"duracao_minutos":90}],"valor_total":900,"observacoes":"Paciente solicitou atendimento pela manha","prontuario":null,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/pacientes/{pacienteId}/tratamentos":{"get":{"tags":["Pacientes"],"summary":"[Disponivel] Listar tratamentos do paciente","operationId":"listTratamentosByPaciente","parameters":[{"$ref":"#/components/parameters/PacienteId"},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusTratamentoEnum"}}],"responses":{"200":{"description":"Tratamentos vinculados ao paciente.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Tratamento"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"6fb94981-914c-4a09-831f-b24d4a45e3d3","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","descricao":"Tratamento ortodontico completo","dente":"Arcada superior","status":"em_andamento","data_inicio":"2026-06-05","data_conclusao":null,"valor_total":4500,"observacoes":"Reavaliar em 60 dias","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/pacientes/{pacienteId}/orcamentos":{"get":{"tags":["Pacientes"],"summary":"[Disponivel] Listar orcamentos do paciente","operationId":"listOrcamentosByPaciente","parameters":[{"$ref":"#/components/parameters/PacienteId"},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusOrcamentoEnum"}}],"responses":{"200":{"description":"Orcamentos vinculados ao paciente.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Orcamento"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"2b2b5a1f-0a84-4988-b9c4-f6864f0e1934","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","numero":"ORC-2026-0041","data":"2026-06-16","validade":"2026-06-30","status":"pendente","total":4500,"total_com_desconto":4200,"desconto_pct":6.67,"itens":[{"procedimento_id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","quantidade":1,"valor_unitario":4500,"desconto_pct":6.67,"valor_total":4200}],"parcelas":6,"observacoes":"Pagamento via cartao","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/pacientes/{pacienteId}/historico-clinico":{"get":{"tags":["Pacientes"],"summary":"[Disponivel] Listar historico clinico do paciente","operationId":"listHistoricoClinicoByPaciente","parameters":[{"$ref":"#/components/parameters/PacienteId"},{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"name":"tipo","in":"query","schema":{"$ref":"#/components/schemas/TipoHistoricoEnum"}}],"responses":{"200":{"description":"Historico clinico e anotações do paciente.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/HistoricoClinico"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"6e3552ea-9382-44ec-8e2f-676e4610aa80","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","data":"2026-06-16","tipo":"anamnese","descricao":"Paciente relata sensibilidade ao frio.","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","anexos":["https://odonto.nortweb.com.br/storage/anexos/anamnese-001.pdf"],"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"post":{"tags":["Pacientes"],"summary":"[Disponivel] Criar registro no historico clinico","operationId":"createHistoricoClinico","parameters":[{"$ref":"#/components/parameters/PacienteId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoricoClinicoCreateInput"},"examples":{"default":{"value":{"data":"2026-06-16","tipo":"anamnese","descricao":"Paciente relata sensibilidade ao frio.","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","anexos":["https://arquivos.exemplo.com/anamnese-001.pdf"]}}}}}},"responses":{"201":{"description":"Registro do historico criado com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/HistoricoClinico"}}},"examples":{"created":{"value":{"data":{"id":"6e3552ea-9382-44ec-8e2f-676e4610aa80","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","data":"2026-06-16","tipo":"anamnese","descricao":"Paciente relata sensibilidade ao frio.","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","anexos":["https://odonto.nortweb.com.br/storage/anexos/anamnese-001.pdf"],"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/profissionais":{"get":{"tags":["Profissionais"],"summary":"[Disponivel] Listar profissionais","operationId":"listProfissionais","parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"name":"nome","in":"query","schema":{"type":"string"}},{"name":"especialidade","in":"query","schema":{"$ref":"#/components/schemas/EspecialidadeEnum"}},{"name":"ativo","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Lista paginada de profissionais da clinica.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Profissional"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Dr. Joao Pereira","especialidade":"Ortodontia","cro_numero":"12345","cro_uf":"SP","telefone":"11988887777","email":"joao@clinica.com.br","ativo":true,"percentual_repasse":45,"foto_url":null,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}},"post":{"tags":["Profissionais"],"summary":"[Disponivel] Criar profissional","operationId":"createProfissional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfissionalCreateInput"},"examples":{"default":{"value":{"nome":"Dr. Joao Pereira","especialidade":"Ortodontia","cro_numero":"12345","cro_uf":"SP","telefone":"11988887777","email":"joao@clinica.com.br","percentual_repasse":45,"ativo":true}}}}}},"responses":{"201":{"description":"Profissional criado com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Profissional"}}},"examples":{"created":{"value":{"data":{"id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Dr. Joao Pereira","especialidade":"Ortodontia","cro_numero":"12345","cro_uf":"SP","telefone":"11988887777","email":"joao@clinica.com.br","ativo":true,"percentual_repasse":45,"foto_url":null,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}},"/profissionais/{profissionalId}":{"get":{"tags":["Profissionais"],"summary":"[Disponivel] Buscar profissional por ID","operationId":"getProfissional","parameters":[{"$ref":"#/components/parameters/ProfissionalId"}],"responses":{"200":{"description":"Profissional localizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Profissional"}}},"examples":{"default":{"value":{"data":{"id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Dr. Joao Pereira","especialidade":"Ortodontia","cro_numero":"12345","cro_uf":"SP","telefone":"11988887777","email":"joao@clinica.com.br","ativo":true,"percentual_repasse":45,"foto_url":null,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"patch":{"tags":["Profissionais"],"summary":"[Disponivel] Atualizar profissional","operationId":"updateProfissional","parameters":[{"$ref":"#/components/parameters/ProfissionalId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfissionalUpdateInput"}}}},"responses":{"200":{"description":"Profissional atualizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Profissional"}}},"examples":{"created":{"value":{"data":{"id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Dr. Joao Pereira","especialidade":"Ortodontia","cro_numero":"12345","cro_uf":"SP","telefone":"11988887777","email":"joao@clinica.com.br","ativo":true,"percentual_repasse":50,"foto_url":null,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"delete":{"tags":["Profissionais"],"summary":"[Disponivel] Excluir profissional","operationId":"deleteProfissional","parameters":[{"$ref":"#/components/parameters/ProfissionalId"}],"responses":{"204":{"description":"Profissional excluido."},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/procedimentos":{"get":{"tags":["Procedimentos"],"summary":"[Disponivel] Listar procedimentos","operationId":"listProcedimentos","parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"name":"nome","in":"query","schema":{"type":"string"}},{"name":"categoria","in":"query","schema":{"type":"string"}},{"name":"especialidade","in":"query","schema":{"type":"string"}},{"name":"ativo","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Lista paginada de procedimentos.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Procedimento"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Clareamento dental","codigo_tuss":"30101012","descricao":"Clareamento de consultorio","valor":900,"duracao_minutos":90,"especialidade":"Estetica","categoria":"Estetica","ativo":true,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}},"post":{"tags":["Procedimentos"],"summary":"[Disponivel] Criar procedimento","operationId":"createProcedimento","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcedimentoCreateInput"},"examples":{"default":{"value":{"nome":"Clareamento dental","codigo_tuss":"30101012","descricao":"Clareamento de consultorio","valor":900,"duracao_minutos":90,"especialidade":"Estetica","categoria":"Estetica","ativo":true}}}}}},"responses":{"201":{"description":"Procedimento criado com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Procedimento"}}},"examples":{"created":{"value":{"data":{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Clareamento dental","codigo_tuss":"30101012","descricao":"Clareamento de consultorio","valor":900,"duracao_minutos":90,"especialidade":"Estetica","categoria":"Estetica","ativo":true,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}},"/procedimentos/{procedimentoId}":{"get":{"tags":["Procedimentos"],"summary":"[Disponivel] Buscar procedimento por ID","operationId":"getProcedimento","parameters":[{"$ref":"#/components/parameters/ProcedimentoId"}],"responses":{"200":{"description":"Procedimento localizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Procedimento"}}},"examples":{"default":{"value":{"data":{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Clareamento dental","codigo_tuss":"30101012","descricao":"Clareamento de consultorio","valor":900,"duracao_minutos":90,"especialidade":"Estetica","categoria":"Estetica","ativo":true,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"patch":{"tags":["Procedimentos"],"summary":"[Disponivel] Atualizar procedimento","operationId":"updateProcedimento","parameters":[{"$ref":"#/components/parameters/ProcedimentoId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcedimentoUpdateInput"}}}},"responses":{"200":{"description":"Procedimento atualizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Procedimento"}}},"examples":{"created":{"value":{"data":{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","nome":"Clareamento dental","codigo_tuss":"30101012","descricao":"Clareamento de consultorio","valor":950,"duracao_minutos":90,"especialidade":"Estetica","categoria":"Estetica","ativo":true,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"delete":{"tags":["Procedimentos"],"summary":"[Disponivel] Excluir procedimento","operationId":"deleteProcedimento","parameters":[{"$ref":"#/components/parameters/ProcedimentoId"}],"responses":{"204":{"description":"Procedimento excluido."},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/consultas":{"get":{"tags":["Consultas"],"summary":"[Disponivel] Listar consultas","operationId":"listConsultas","parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"name":"paciente_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"profissional_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusConsultaEnum"}},{"name":"tipo","in":"query","schema":{"$ref":"#/components/schemas/TipoConsultaEnum"}}],"responses":{"200":{"description":"Lista paginada de consultas.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Consulta"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"7d8d5e35-1ce5-42c4-b84d-9df4f2f41ba4","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","data":"2026-06-20","hora":"09:30","duracao_minutos":60,"tipo":"consulta","status":"agendada","procedimentos":[{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","valor":900,"duracao_minutos":90}],"valor_total":900,"observacoes":"Paciente solicitou atendimento pela manha","prontuario":null,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}},"post":{"tags":["Consultas"],"summary":"[Disponivel] Criar consulta","description":"Cria uma consulta ou procedimento na agenda. O backend deve validar conflito de horario do profissional.","operationId":"createConsulta","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsultaCreateInput"},"examples":{"default":{"value":{"paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","data":"2026-06-20","hora":"09:30","duracao_minutos":60,"tipo":"consulta","status":"agendada","procedimentos":[{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","valor":900,"duracao_minutos":90}],"valor_total":900,"observacoes":"Paciente solicitou atendimento pela manha"}}}}}},"responses":{"201":{"description":"Consulta criada com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Consulta"}}},"examples":{"created":{"value":{"data":{"id":"7d8d5e35-1ce5-42c4-b84d-9df4f2f41ba4","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","data":"2026-06-20","hora":"09:30","duracao_minutos":60,"tipo":"consulta","status":"agendada","procedimentos":[{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","valor":900,"duracao_minutos":90}],"valor_total":900,"observacoes":"Paciente solicitou atendimento pela manha","prontuario":null,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}},"/consultas/{consultaId}":{"get":{"tags":["Consultas"],"summary":"[Disponivel] Buscar consulta por ID","operationId":"getConsulta","parameters":[{"$ref":"#/components/parameters/ConsultaId"}],"responses":{"200":{"description":"Consulta localizada.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Consulta"}}},"examples":{"default":{"value":{"data":{"id":"7d8d5e35-1ce5-42c4-b84d-9df4f2f41ba4","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","data":"2026-06-20","hora":"09:30","duracao_minutos":60,"tipo":"consulta","status":"agendada","procedimentos":[{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","valor":900,"duracao_minutos":90}],"valor_total":900,"observacoes":"Paciente solicitou atendimento pela manha","prontuario":null,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"patch":{"tags":["Consultas"],"summary":"[Disponivel] Atualizar consulta","operationId":"updateConsulta","parameters":[{"$ref":"#/components/parameters/ConsultaId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsultaUpdateInput"}}}},"responses":{"200":{"description":"Consulta atualizada com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Consulta"}}},"examples":{"created":{"value":{"data":{"id":"7d8d5e35-1ce5-42c4-b84d-9df4f2f41ba4","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","data":"2026-06-20","hora":"10:00","duracao_minutos":60,"tipo":"consulta","status":"agendada","procedimentos":[{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","valor":900,"duracao_minutos":90}],"valor_total":900,"observacoes":"Paciente solicitou atendimento pela manha","prontuario":null,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T15:00:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"delete":{"tags":["Consultas"],"summary":"[Disponivel] Excluir consulta","operationId":"deleteConsulta","parameters":[{"$ref":"#/components/parameters/ConsultaId"}],"responses":{"204":{"description":"Consulta excluida."},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/consultas/{consultaId}/status":{"post":{"tags":["Consultas"],"summary":"[Disponivel] Atualizar status de consulta","operationId":"updateConsultaStatus","parameters":[{"$ref":"#/components/parameters/ConsultaId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsultaStatusUpdateInput"},"examples":{"default":{"value":{"status":"confirmada","observacao_evento":"Confirmada pelo portal do paciente"}}}}}},"responses":{"200":{"description":"Status atualizado com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Consulta"}}},"examples":{"created":{"value":{"data":{"id":"7d8d5e35-1ce5-42c4-b84d-9df4f2f41ba4","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","data":"2026-06-20","hora":"09:30","duracao_minutos":60,"tipo":"consulta","status":"confirmada","procedimentos":[{"id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","valor":900,"duracao_minutos":90}],"valor_total":900,"observacoes":"Paciente solicitou atendimento pela manha","prontuario":null,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T15:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/disponibilidade":{"get":{"tags":["Disponibilidade"],"summary":"[Disponivel] Consultar disponibilidade","description":"Retorna janelas disponiveis de agenda por profissional e intervalo. Os horarios usam a grade configurada na clinica e removem conflitos de consultas ja agendadas. Recomendado para sites, chatbots e autoagendamento.","operationId":"getDisponibilidade","parameters":[{"name":"profissional_id","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"data_inicio","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"procedimento_id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Quando informado, a duracao pode ser inferida do procedimento."},{"name":"duracao_minutos","in":"query","schema":{"type":"integer","minimum":5,"maximum":720}},{"name":"slot_interval_min","in":"query","schema":{"type":"integer","minimum":5,"maximum":240,"default":30},"description":"Intervalo entre sugestoes quando o profissional nao possuir intervalo especifico configurado."}],"responses":{"200":{"description":"Disponibilidade consolidada por dia.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DisponibilidadeDia"}}}},"examples":{"default":{"value":{"data":[{"data":"2026-06-20","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","slots":[{"inicio":"09:00","fim":"10:00","disponivel":false,"motivo":"ocupado"},{"inicio":"10:00","fim":"11:00","disponivel":true,"motivo":null}]}]}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}},"/tratamentos":{"get":{"tags":["Tratamentos"],"summary":"[Disponivel] Listar tratamentos","operationId":"listTratamentos","parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"name":"paciente_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"profissional_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusTratamentoEnum"}}],"responses":{"200":{"description":"Lista paginada de tratamentos.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Tratamento"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"6fb94981-914c-4a09-831f-b24d4a45e3d3","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","descricao":"Tratamento ortodontico completo","dente":"Arcada superior","status":"em_andamento","data_inicio":"2026-06-05","data_conclusao":null,"valor_total":4500,"observacoes":"Reavaliar em 60 dias","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}},"post":{"tags":["Tratamentos"],"summary":"[Disponivel] Criar tratamento","operationId":"createTratamento","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TratamentoCreateInput"}}}},"responses":{"201":{"description":"Tratamento criado com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Tratamento"}}},"examples":{"created":{"value":{"data":{"id":"6fb94981-914c-4a09-831f-b24d4a45e3d3","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","descricao":"Tratamento ortodontico completo","dente":"Arcada superior","status":"em_andamento","data_inicio":"2026-06-05","data_conclusao":null,"valor_total":4500,"observacoes":"Reavaliar em 60 dias","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}},"/tratamentos/{tratamentoId}":{"get":{"tags":["Tratamentos"],"summary":"[Disponivel] Buscar tratamento por ID","operationId":"getTratamento","parameters":[{"$ref":"#/components/parameters/TratamentoId"}],"responses":{"200":{"description":"Tratamento localizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Tratamento"}}},"examples":{"default":{"value":{"data":{"id":"6fb94981-914c-4a09-831f-b24d4a45e3d3","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","descricao":"Tratamento ortodontico completo","dente":"Arcada superior","status":"em_andamento","data_inicio":"2026-06-05","data_conclusao":null,"valor_total":4500,"observacoes":"Reavaliar em 60 dias","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"patch":{"tags":["Tratamentos"],"summary":"[Disponivel] Atualizar tratamento","operationId":"updateTratamento","parameters":[{"$ref":"#/components/parameters/TratamentoId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TratamentoUpdateInput"}}}},"responses":{"200":{"description":"Tratamento atualizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Tratamento"}}},"examples":{"created":{"value":{"data":{"id":"6fb94981-914c-4a09-831f-b24d4a45e3d3","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","profissional_nome":"Dr. Joao Pereira","descricao":"Tratamento ortodontico completo","dente":"Arcada superior","status":"concluido","data_inicio":"2026-06-05","data_conclusao":"2026-08-30","valor_total":4500,"observacoes":"Reavaliar em 60 dias","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"delete":{"tags":["Tratamentos"],"summary":"[Disponivel] Excluir tratamento","operationId":"deleteTratamento","parameters":[{"$ref":"#/components/parameters/TratamentoId"}],"responses":{"204":{"description":"Tratamento excluido."},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/orcamentos":{"get":{"tags":["Orcamentos"],"summary":"[Disponivel] Listar orcamentos","operationId":"listOrcamentos","parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"name":"paciente_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusOrcamentoEnum"}},{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Lista paginada de orcamentos.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Orcamento"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"2b2b5a1f-0a84-4988-b9c4-f6864f0e1934","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","numero":"ORC-2026-0041","data":"2026-06-16","validade":"2026-06-30","status":"pendente","total":4500,"total_com_desconto":4200,"desconto_pct":6.67,"itens":[{"procedimento_id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","quantidade":1,"valor_unitario":4500,"desconto_pct":6.67,"valor_total":4200}],"parcelas":6,"observacoes":"Pagamento via cartao","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}},"post":{"tags":["Orcamentos"],"summary":"[Disponivel] Criar orcamento","operationId":"createOrcamento","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrcamentoCreateInput"}}}},"responses":{"201":{"description":"Orcamento criado com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Orcamento"}}},"examples":{"created":{"value":{"data":{"id":"2b2b5a1f-0a84-4988-b9c4-f6864f0e1934","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","numero":"ORC-2026-0041","data":"2026-06-16","validade":"2026-06-30","status":"pendente","total":4500,"total_com_desconto":4200,"desconto_pct":6.67,"itens":[{"procedimento_id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","quantidade":1,"valor_unitario":4500,"desconto_pct":6.67,"valor_total":4200}],"parcelas":6,"observacoes":"Pagamento via cartao","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}},"/orcamentos/{orcamentoId}":{"get":{"tags":["Orcamentos"],"summary":"[Disponivel] Buscar orcamento por ID","operationId":"getOrcamento","parameters":[{"$ref":"#/components/parameters/OrcamentoId"}],"responses":{"200":{"description":"Orcamento localizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Orcamento"}}},"examples":{"default":{"value":{"data":{"id":"2b2b5a1f-0a84-4988-b9c4-f6864f0e1934","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","numero":"ORC-2026-0041","data":"2026-06-16","validade":"2026-06-30","status":"pendente","total":4500,"total_com_desconto":4200,"desconto_pct":6.67,"itens":[{"procedimento_id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","quantidade":1,"valor_unitario":4500,"desconto_pct":6.67,"valor_total":4200}],"parcelas":6,"observacoes":"Pagamento via cartao","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"patch":{"tags":["Orcamentos"],"summary":"[Disponivel] Atualizar orcamento","operationId":"updateOrcamento","parameters":[{"$ref":"#/components/parameters/OrcamentoId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrcamentoUpdateInput"}}}},"responses":{"200":{"description":"Orcamento atualizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Orcamento"}}},"examples":{"created":{"value":{"data":{"id":"2b2b5a1f-0a84-4988-b9c4-f6864f0e1934","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","numero":"ORC-2026-0041","data":"2026-06-16","validade":"2026-06-30","status":"em_negociacao","total":4500,"total_com_desconto":4200,"desconto_pct":6.67,"itens":[{"procedimento_id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","quantidade":1,"valor_unitario":4500,"desconto_pct":6.67,"valor_total":4200}],"parcelas":6,"observacoes":"Pagamento via cartao","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"delete":{"tags":["Orcamentos"],"summary":"[Disponivel] Excluir orcamento","operationId":"deleteOrcamento","parameters":[{"$ref":"#/components/parameters/OrcamentoId"}],"responses":{"204":{"description":"Orcamento excluido."},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/orcamentos/{orcamentoId}/aprovar":{"post":{"tags":["Orcamentos"],"summary":"[Disponivel] Aprovar orcamento","operationId":"approveOrcamento","parameters":[{"$ref":"#/components/parameters/OrcamentoId"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrcamentoApproveInput"},"examples":{"default":{"value":{"observacao":"Aprovado pelo portal do paciente"}}}}}},"responses":{"200":{"description":"Orcamento aprovado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Orcamento"}}},"examples":{"created":{"value":{"data":{"id":"2b2b5a1f-0a84-4988-b9c4-f6864f0e1934","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","paciente_nome":"Maria da Silva","profissional_id":"1890d4b2-f7fb-4b2a-a685-8d6f50a21d48","numero":"ORC-2026-0041","data":"2026-06-16","validade":"2026-06-30","status":"aprovado","total":4500,"total_com_desconto":4200,"desconto_pct":6.67,"itens":[{"procedimento_id":"71f8aaf0-5dfb-44c0-9745-189f2aa35eef","nome":"Clareamento dental","quantidade":1,"valor_unitario":4500,"desconto_pct":6.67,"valor_total":4200}],"parcelas":6,"observacoes":"Pagamento via cartao","created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}},"/financeiro":{"get":{"tags":["Financeiro"],"summary":"[Disponivel] Listar lancamentos financeiros","operationId":"listFinanceiro","parameters":[{"$ref":"#/components/parameters/Page"},{"$ref":"#/components/parameters/PerPage"},{"name":"tipo","in":"query","schema":{"$ref":"#/components/schemas/TipoFinanceiroEnum"}},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusFinanceiroEnum"}},{"name":"categoria","in":"query","schema":{"type":"string"}},{"name":"paciente_id","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"data_inicio","in":"query","schema":{"type":"string","format":"date"}},{"name":"data_fim","in":"query","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Lista paginada de lancamentos financeiros.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Financeiro"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"}}},"examples":{"default":{"value":{"data":[{"id":"db24d938-2fa4-44d1-a6a9-749085f14e0c","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","descricao":"Entrada do tratamento ortodontico","tipo":"receita","valor":700,"data":"2026-06-16","vencimento":"2026-06-16","categoria":"Tratamentos","forma_pagamento":"cartao","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","consulta_id":"7d8d5e35-1ce5-42c4-b84d-9df4f2f41ba4","orcamento_id":"2b2b5a1f-0a84-4988-b9c4-f6864f0e1934","status":"pago","parcela_atual":1,"total_parcelas":6,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}],"meta":{"page":1,"per_page":20,"total":1,"total_pages":1}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}},"post":{"tags":["Financeiro"],"summary":"[Disponivel] Criar lancamento financeiro","operationId":"createFinanceiro","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinanceiroCreateInput"}}}},"responses":{"201":{"description":"Lancamento financeiro criado com sucesso.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Financeiro"}}},"examples":{"created":{"value":{"data":{"id":"db24d938-2fa4-44d1-a6a9-749085f14e0c","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","descricao":"Entrada do tratamento ortodontico","tipo":"receita","valor":700,"data":"2026-06-16","vencimento":"2026-06-16","categoria":"Tratamentos","forma_pagamento":"cartao","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","consulta_id":"7d8d5e35-1ce5-42c4-b84d-9df4f2f41ba4","orcamento_id":"2b2b5a1f-0a84-4988-b9c4-f6864f0e1934","status":"pago","parcela_atual":1,"total_parcelas":6,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}},"/financeiro/{financeiroId}":{"get":{"tags":["Financeiro"],"summary":"[Disponivel] Buscar lancamento financeiro por ID","operationId":"getFinanceiro","parameters":[{"$ref":"#/components/parameters/FinanceiroId"}],"responses":{"200":{"description":"Lancamento localizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Financeiro"}}},"examples":{"default":{"value":{"data":{"id":"db24d938-2fa4-44d1-a6a9-749085f14e0c","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","descricao":"Entrada do tratamento ortodontico","tipo":"receita","valor":700,"data":"2026-06-16","vencimento":"2026-06-16","categoria":"Tratamentos","forma_pagamento":"cartao","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","consulta_id":"7d8d5e35-1ce5-42c4-b84d-9df4f2f41ba4","orcamento_id":"2b2b5a1f-0a84-4988-b9c4-f6864f0e1934","status":"pago","parcela_atual":1,"total_parcelas":6,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"patch":{"tags":["Financeiro"],"summary":"[Disponivel] Atualizar lancamento financeiro","operationId":"updateFinanceiro","parameters":[{"$ref":"#/components/parameters/FinanceiroId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinanceiroUpdateInput"}}}},"responses":{"200":{"description":"Lancamento atualizado.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Financeiro"}}},"examples":{"created":{"value":{"data":{"id":"db24d938-2fa4-44d1-a6a9-749085f14e0c","clinica_id":"2dca3b4a-1f54-4b95-8b4e-21f0e04d912f","descricao":"Entrada do tratamento ortodontico","tipo":"receita","valor":750,"data":"2026-06-16","vencimento":"2026-06-16","categoria":"Tratamentos","forma_pagamento":"cartao","paciente_id":"0c6cbf8f-2436-4419-b4cc-f091c5b2f4dd","consulta_id":"7d8d5e35-1ce5-42c4-b84d-9df4f2f41ba4","orcamento_id":"2b2b5a1f-0a84-4988-b9c4-f6864f0e1934","status":"pago","parcela_atual":1,"total_parcelas":6,"created_at":"2026-06-16T14:20:00.000Z","updated_at":"2026-06-16T14:20:00.000Z"}}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}},"delete":{"tags":["Financeiro"],"summary":"[Disponivel] Excluir lancamento financeiro","operationId":"deleteFinanceiro","parameters":[{"$ref":"#/components/parameters/FinanceiroId"}],"responses":{"204":{"description":"Lancamento excluido."},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Use `Authorization: Bearer odonto_live_...`."},"xApiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Alternativa ao header Authorization."}},"parameters":{"Page":{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"Pagina atual."},"PerPage":{"name":"per_page","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"description":"Itens por pagina."},"SortBy":{"name":"sort_by","in":"query","schema":{"type":"string"},"description":"Campo usado para ordenacao."},"SortOrder":{"name":"sort_order","in":"query","schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"description":"Direcao da ordenacao."},"UpdatedAfter":{"name":"updated_after","in":"query","schema":{"type":"string","format":"date-time"},"description":"Retorna apenas registros alterados apos esse instante."},"PacienteId":{"name":"pacienteId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},"ProfissionalId":{"name":"profissionalId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},"ProcedimentoId":{"name":"procedimentoId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},"ConsultaId":{"name":"consultaId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},"TratamentoId":{"name":"tratamentoId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},"OrcamentoId":{"name":"orcamentoId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},"FinanceiroId":{"name":"financeiroId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}},"responses":{"UnauthorizedError":{"description":"Token ausente ou invalido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"default":{"value":{"error":{"code":"unauthorized","message":"API key invalida"}}}}}}},"ForbiddenError":{"description":"Escopo insuficiente para executar a operacao.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"default":{"value":{"error":{"code":"forbidden","message":"Escopo insuficiente para esta operacao"}}}}}}},"ValidationError":{"description":"Falha de validacao de entrada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"default":{"value":{"error":{"code":"validation_error","message":"Campo invalido","details":{"cpf":["CPF invalido"]}}}}}}}},"NotFoundError":{"description":"Recurso nao encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"default":{"value":{"error":{"code":"not_found","message":"Registro nao encontrado"}}}}}}}},"schemas":{"PaginationMeta":{"type":"object","required":["page","per_page","total","total_pages"],"properties":{"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"total_pages":{"type":"integer","minimum":0}}},"ErrorDetail":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"ErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"$ref":"#/components/schemas/ErrorDetail"}}}}},"EspecialidadeEnum":{"type":"string","enum":["Clinico_geral","Ortodontia","Implantodontia","Endodontia","Periodontia","Estetica","Cirurgia","Outro"]},"TipoConsultaEnum":{"type":"string","enum":["avaliacao","consulta","retorno","procedimento","urgencia"]},"StatusConsultaEnum":{"type":"string","enum":["agendada","confirmada","em_atendimento","concluida","cancelada","faltou"]},"StatusTratamentoEnum":{"type":"string","enum":["planejado","em_andamento","concluido","cancelado"]},"StatusOrcamentoEnum":{"type":"string","enum":["pendente","aprovado","recusado","em_negociacao"]},"TipoHistoricoEnum":{"type":"string","enum":["anamnese","exame","procedimento","observacao","receita"]},"TipoFinanceiroEnum":{"type":"string","enum":["receita","despesa"]},"StatusFinanceiroEnum":{"type":"string","enum":["pendente","pago","atrasado","cancelado"]},"Endereco":{"type":"object","properties":{"cep":{"type":"string"},"rua":{"type":"string"},"numero":{"type":"string"},"complemento":{"type":"string"},"bairro":{"type":"string"},"cidade":{"type":"string"},"estado":{"type":"string","minLength":2,"maxLength":2}}},"ProcedimentoResumo":{"type":"object","required":["id","nome"],"properties":{"id":{"type":"string","format":"uuid"},"nome":{"type":"string"},"valor":{"type":"number","format":"float"},"duracao_minutos":{"type":"integer"}}},"Paciente":{"type":"object","required":["id","clinica_id","nome","ativo","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"clinica_id":{"type":"string","format":"uuid"},"nome":{"type":"string"},"cpf":{"type":"string","nullable":true},"rg":{"type":"string","nullable":true},"data_nascimento":{"type":"string","format":"date","nullable":true},"telefone":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"endereco":{"allOf":[{"$ref":"#/components/schemas/Endereco"}],"nullable":true},"profissao":{"type":"string","nullable":true},"convenio":{"type":"string","nullable":true},"numero_convenio":{"type":"string","nullable":true},"foto_url":{"type":"string","format":"uri","nullable":true},"alergias":{"type":"array","items":{"type":"string"}},"medicamentos_uso":{"type":"array","items":{"type":"string"}},"doencas_preexistentes":{"type":"string","nullable":true},"observacoes_anamnese":{"type":"string","nullable":true},"ativo":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"PacienteCreateInput":{"type":"object","required":["nome"],"properties":{"nome":{"type":"string","minLength":2,"maxLength":120},"cpf":{"type":"string"},"rg":{"type":"string"},"data_nascimento":{"type":"string","format":"date"},"telefone":{"type":"string"},"email":{"type":"string","format":"email"},"endereco":{"$ref":"#/components/schemas/Endereco"},"profissao":{"type":"string"},"convenio":{"type":"string"},"numero_convenio":{"type":"string"},"foto_url":{"type":"string","format":"uri"},"alergias":{"type":"array","items":{"type":"string"}},"medicamentos_uso":{"type":"array","items":{"type":"string"}},"doencas_preexistentes":{"type":"string"},"observacoes_anamnese":{"type":"string"},"ativo":{"type":"boolean","default":true}}},"PacienteUpdateInput":{"type":"object","properties":{"nome":{"type":"string","minLength":2,"maxLength":120},"cpf":{"type":"string"},"rg":{"type":"string"},"data_nascimento":{"type":"string","format":"date"},"telefone":{"type":"string"},"email":{"type":"string","format":"email"},"endereco":{"$ref":"#/components/schemas/Endereco"},"profissao":{"type":"string"},"convenio":{"type":"string"},"numero_convenio":{"type":"string"},"foto_url":{"type":"string","format":"uri"},"alergias":{"type":"array","items":{"type":"string"}},"medicamentos_uso":{"type":"array","items":{"type":"string"}},"doencas_preexistentes":{"type":"string"},"observacoes_anamnese":{"type":"string"},"ativo":{"type":"boolean"}}},"HistoricoClinico":{"type":"object","required":["id","clinica_id","paciente_id","data","tipo","descricao","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"clinica_id":{"type":"string","format":"uuid"},"paciente_id":{"type":"string","format":"uuid"},"data":{"type":"string","format":"date"},"tipo":{"$ref":"#/components/schemas/TipoHistoricoEnum"},"descricao":{"type":"string"},"profissional_id":{"type":"string","format":"uuid","nullable":true},"profissional_nome":{"type":"string","nullable":true},"anexos":{"type":"array","items":{"type":"string","format":"uri"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"HistoricoClinicoCreateInput":{"type":"object","required":["data","tipo","descricao"],"properties":{"data":{"type":"string","format":"date"},"tipo":{"$ref":"#/components/schemas/TipoHistoricoEnum"},"descricao":{"type":"string"},"profissional_id":{"type":"string","format":"uuid"},"anexos":{"type":"array","items":{"type":"string","format":"uri"}}}},"Profissional":{"type":"object","required":["id","clinica_id","nome","ativo","percentual_repasse","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"clinica_id":{"type":"string","format":"uuid"},"nome":{"type":"string"},"especialidade":{"allOf":[{"$ref":"#/components/schemas/EspecialidadeEnum"}],"nullable":true},"cro_numero":{"type":"string","nullable":true},"cro_uf":{"type":"string","nullable":true,"minLength":2,"maxLength":2},"telefone":{"type":"string","nullable":true},"email":{"type":"string","format":"email","nullable":true},"ativo":{"type":"boolean"},"percentual_repasse":{"type":"number","format":"float"},"foto_url":{"type":"string","format":"uri","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"ProfissionalCreateInput":{"type":"object","required":["nome"],"properties":{"nome":{"type":"string","minLength":2,"maxLength":120},"especialidade":{"$ref":"#/components/schemas/EspecialidadeEnum"},"cro_numero":{"type":"string"},"cro_uf":{"type":"string","minLength":2,"maxLength":2},"telefone":{"type":"string"},"email":{"type":"string","format":"email"},"percentual_repasse":{"type":"number","format":"float","default":50},"foto_url":{"type":"string","format":"uri"},"ativo":{"type":"boolean","default":true}}},"ProfissionalUpdateInput":{"type":"object","properties":{"nome":{"type":"string","minLength":2,"maxLength":120},"especialidade":{"$ref":"#/components/schemas/EspecialidadeEnum"},"cro_numero":{"type":"string"},"cro_uf":{"type":"string","minLength":2,"maxLength":2},"telefone":{"type":"string"},"email":{"type":"string","format":"email"},"percentual_repasse":{"type":"number","format":"float"},"foto_url":{"type":"string","format":"uri"},"ativo":{"type":"boolean"}}},"Procedimento":{"type":"object","required":["id","clinica_id","nome","valor","duracao_minutos","ativo","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"clinica_id":{"type":"string","format":"uuid"},"nome":{"type":"string"},"codigo_tuss":{"type":"string","nullable":true},"descricao":{"type":"string","nullable":true},"valor":{"type":"number","format":"float"},"duracao_minutos":{"type":"integer","minimum":1},"especialidade":{"type":"string","nullable":true},"categoria":{"type":"string","nullable":true},"ativo":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"ProcedimentoCreateInput":{"type":"object","required":["nome","valor"],"properties":{"nome":{"type":"string","minLength":2,"maxLength":120},"codigo_tuss":{"type":"string"},"descricao":{"type":"string"},"valor":{"type":"number","format":"float","minimum":0},"duracao_minutos":{"type":"integer","minimum":1,"default":60},"especialidade":{"type":"string"},"categoria":{"type":"string"},"ativo":{"type":"boolean","default":true}}},"ProcedimentoUpdateInput":{"type":"object","properties":{"nome":{"type":"string","minLength":2,"maxLength":120},"codigo_tuss":{"type":"string"},"descricao":{"type":"string"},"valor":{"type":"number","format":"float","minimum":0},"duracao_minutos":{"type":"integer","minimum":1},"especialidade":{"type":"string"},"categoria":{"type":"string"},"ativo":{"type":"boolean"}}},"Consulta":{"type":"object","required":["id","clinica_id","paciente_id","profissional_id","data","hora","duracao_minutos","tipo","status","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"clinica_id":{"type":"string","format":"uuid"},"paciente_id":{"type":"string","format":"uuid"},"paciente_nome":{"type":"string","nullable":true},"profissional_id":{"type":"string","format":"uuid"},"profissional_nome":{"type":"string","nullable":true},"data":{"type":"string","format":"date"},"hora":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"duracao_minutos":{"type":"integer","minimum":1},"tipo":{"$ref":"#/components/schemas/TipoConsultaEnum"},"status":{"$ref":"#/components/schemas/StatusConsultaEnum"},"procedimentos":{"type":"array","items":{"$ref":"#/components/schemas/ProcedimentoResumo"}},"valor_total":{"type":"number","format":"float","nullable":true},"observacoes":{"type":"string","nullable":true},"prontuario":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"ConsultaCreateInput":{"type":"object","required":["paciente_id","profissional_id","data","hora"],"properties":{"paciente_id":{"type":"string","format":"uuid"},"profissional_id":{"type":"string","format":"uuid"},"data":{"type":"string","format":"date"},"hora":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"duracao_minutos":{"type":"integer","minimum":1,"default":60},"tipo":{"$ref":"#/components/schemas/TipoConsultaEnum"},"status":{"$ref":"#/components/schemas/StatusConsultaEnum"},"procedimentos":{"type":"array","items":{"$ref":"#/components/schemas/ProcedimentoResumo"}},"valor_total":{"type":"number","format":"float"},"observacoes":{"type":"string"},"prontuario":{"type":"string"}}},"ConsultaUpdateInput":{"type":"object","properties":{"paciente_id":{"type":"string","format":"uuid"},"profissional_id":{"type":"string","format":"uuid"},"data":{"type":"string","format":"date"},"hora":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"duracao_minutos":{"type":"integer","minimum":1},"tipo":{"$ref":"#/components/schemas/TipoConsultaEnum"},"status":{"$ref":"#/components/schemas/StatusConsultaEnum"},"procedimentos":{"type":"array","items":{"$ref":"#/components/schemas/ProcedimentoResumo"}},"valor_total":{"type":"number","format":"float"},"observacoes":{"type":"string"},"prontuario":{"type":"string"}}},"ConsultaStatusUpdateInput":{"type":"object","required":["status"],"properties":{"status":{"$ref":"#/components/schemas/StatusConsultaEnum"},"observacao_evento":{"type":"string"}}},"DisponibilidadeSlot":{"type":"object","required":["inicio","fim","disponivel"],"description":"Slot calculado a partir da grade do profissional e dos conflitos de agenda.","properties":{"inicio":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"fim":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"disponivel":{"type":"boolean"},"motivo":{"type":"string","nullable":true}}},"DisponibilidadeDia":{"type":"object","required":["data","profissional_id","slots"],"description":"Disponibilidade consolidada de um profissional em uma data.","properties":{"data":{"type":"string","format":"date"},"profissional_id":{"type":"string","format":"uuid"},"profissional_nome":{"type":"string","nullable":true},"slots":{"type":"array","items":{"$ref":"#/components/schemas/DisponibilidadeSlot"}}}},"Tratamento":{"type":"object","required":["id","clinica_id","paciente_id","descricao","status","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"clinica_id":{"type":"string","format":"uuid"},"paciente_id":{"type":"string","format":"uuid"},"paciente_nome":{"type":"string","nullable":true},"profissional_id":{"type":"string","format":"uuid","nullable":true},"profissional_nome":{"type":"string","nullable":true},"descricao":{"type":"string"},"dente":{"type":"string","nullable":true},"status":{"$ref":"#/components/schemas/StatusTratamentoEnum"},"data_inicio":{"type":"string","format":"date","nullable":true},"data_conclusao":{"type":"string","format":"date","nullable":true},"valor_total":{"type":"number","format":"float","nullable":true},"observacoes":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"TratamentoCreateInput":{"type":"object","required":["paciente_id","descricao"],"properties":{"paciente_id":{"type":"string","format":"uuid"},"profissional_id":{"type":"string","format":"uuid"},"descricao":{"type":"string"},"dente":{"type":"string"},"status":{"$ref":"#/components/schemas/StatusTratamentoEnum"},"data_inicio":{"type":"string","format":"date"},"data_conclusao":{"type":"string","format":"date"},"valor_total":{"type":"number","format":"float"},"observacoes":{"type":"string"}}},"TratamentoUpdateInput":{"type":"object","properties":{"paciente_id":{"type":"string","format":"uuid"},"profissional_id":{"type":"string","format":"uuid"},"descricao":{"type":"string"},"dente":{"type":"string"},"status":{"$ref":"#/components/schemas/StatusTratamentoEnum"},"data_inicio":{"type":"string","format":"date"},"data_conclusao":{"type":"string","format":"date"},"valor_total":{"type":"number","format":"float"},"observacoes":{"type":"string"}}},"OrcamentoItem":{"type":"object","required":["nome","quantidade","valor_unitario","valor_total"],"properties":{"procedimento_id":{"type":"string","format":"uuid","nullable":true},"nome":{"type":"string"},"quantidade":{"type":"number","format":"float","minimum":0},"valor_unitario":{"type":"number","format":"float","minimum":0},"desconto_pct":{"type":"number","format":"float","minimum":0,"nullable":true},"valor_total":{"type":"number","format":"float","minimum":0}}},"Orcamento":{"type":"object","required":["id","clinica_id","paciente_id","data","status","desconto_pct","parcelas","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"clinica_id":{"type":"string","format":"uuid"},"paciente_id":{"type":"string","format":"uuid"},"paciente_nome":{"type":"string","nullable":true},"profissional_id":{"type":"string","format":"uuid","nullable":true},"numero":{"type":"string","nullable":true},"data":{"type":"string","format":"date"},"validade":{"type":"string","format":"date","nullable":true},"status":{"$ref":"#/components/schemas/StatusOrcamentoEnum"},"total":{"type":"number","format":"float","nullable":true},"total_com_desconto":{"type":"number","format":"float","nullable":true},"desconto_pct":{"type":"number","format":"float"},"itens":{"type":"array","items":{"$ref":"#/components/schemas/OrcamentoItem"}},"parcelas":{"type":"integer","minimum":1},"observacoes":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"OrcamentoCreateInput":{"type":"object","required":["paciente_id","data"],"properties":{"paciente_id":{"type":"string","format":"uuid"},"profissional_id":{"type":"string","format":"uuid"},"numero":{"type":"string"},"data":{"type":"string","format":"date"},"validade":{"type":"string","format":"date"},"status":{"$ref":"#/components/schemas/StatusOrcamentoEnum"},"total":{"type":"number","format":"float"},"total_com_desconto":{"type":"number","format":"float"},"desconto_pct":{"type":"number","format":"float","minimum":0,"default":0},"itens":{"type":"array","items":{"$ref":"#/components/schemas/OrcamentoItem"}},"parcelas":{"type":"integer","minimum":1,"default":1},"observacoes":{"type":"string"}}},"OrcamentoUpdateInput":{"type":"object","properties":{"profissional_id":{"type":"string","format":"uuid"},"numero":{"type":"string"},"data":{"type":"string","format":"date"},"validade":{"type":"string","format":"date"},"status":{"$ref":"#/components/schemas/StatusOrcamentoEnum"},"total":{"type":"number","format":"float"},"total_com_desconto":{"type":"number","format":"float"},"desconto_pct":{"type":"number","format":"float","minimum":0},"itens":{"type":"array","items":{"$ref":"#/components/schemas/OrcamentoItem"}},"parcelas":{"type":"integer","minimum":1},"observacoes":{"type":"string"}}},"OrcamentoApproveInput":{"type":"object","properties":{"observacao":{"type":"string"}}},"Financeiro":{"type":"object","required":["id","clinica_id","descricao","tipo","valor","data","status","parcela_atual","total_parcelas","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"clinica_id":{"type":"string","format":"uuid"},"descricao":{"type":"string"},"tipo":{"$ref":"#/components/schemas/TipoFinanceiroEnum"},"valor":{"type":"number","format":"float"},"data":{"type":"string","format":"date"},"vencimento":{"type":"string","format":"date","nullable":true},"categoria":{"type":"string","nullable":true},"forma_pagamento":{"type":"string","nullable":true},"paciente_id":{"type":"string","format":"uuid","nullable":true},"consulta_id":{"type":"string","format":"uuid","nullable":true},"orcamento_id":{"type":"string","format":"uuid","nullable":true},"status":{"$ref":"#/components/schemas/StatusFinanceiroEnum"},"parcela_atual":{"type":"integer","minimum":1},"total_parcelas":{"type":"integer","minimum":1},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"FinanceiroCreateInput":{"type":"object","required":["descricao","tipo","valor","data"],"properties":{"descricao":{"type":"string"},"tipo":{"$ref":"#/components/schemas/TipoFinanceiroEnum"},"valor":{"type":"number","format":"float","minimum":0},"data":{"type":"string","format":"date"},"vencimento":{"type":"string","format":"date"},"categoria":{"type":"string"},"forma_pagamento":{"type":"string"},"paciente_id":{"type":"string","format":"uuid"},"consulta_id":{"type":"string","format":"uuid"},"orcamento_id":{"type":"string","format":"uuid"},"status":{"$ref":"#/components/schemas/StatusFinanceiroEnum"},"parcela_atual":{"type":"integer","minimum":1,"default":1},"total_parcelas":{"type":"integer","minimum":1,"default":1}}},"FinanceiroUpdateInput":{"type":"object","properties":{"descricao":{"type":"string"},"tipo":{"$ref":"#/components/schemas/TipoFinanceiroEnum"},"valor":{"type":"number","format":"float","minimum":0},"data":{"type":"string","format":"date"},"vencimento":{"type":"string","format":"date"},"categoria":{"type":"string"},"forma_pagamento":{"type":"string"},"paciente_id":{"type":"string","format":"uuid"},"consulta_id":{"type":"string","format":"uuid"},"orcamento_id":{"type":"string","format":"uuid"},"status":{"$ref":"#/components/schemas/StatusFinanceiroEnum"},"parcela_atual":{"type":"integer","minimum":1},"total_parcelas":{"type":"integer","minimum":1}}},"ExternalMeResponse":{"type":"object","required":["ok","clinic","token"],"properties":{"ok":{"type":"boolean"},"clinic":{"type":"object","required":["id","nome"],"properties":{"id":{"type":"string","format":"uuid"},"nome":{"type":"string"},"slug":{"type":"string","nullable":true}}},"token":{"type":"object","required":["id","nome","prefix","scopes"],"properties":{"id":{"type":"string","format":"uuid"},"nome":{"type":"string"},"prefix":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}}}}}}}}}