🎛️ Referência — Parâmetros

Regras de negócio e controle de acesso da clínica: desconto e alçada, financeiro, orçamento (Farol), estoque, avisos, acolhimento, serviços online, termo e permissões de dashboard.

ℹ️ Como ler esta referência

Esta página cobre 1 grupo(s), 31 caminhos e 45 operações (método + caminho) do Swagger oficial. Todas as rotas usam a base https://api.rabisistemas.com.br/api/v1/integrations (produção) ou https://api.hmg.rabisistemas.dev/api/v1/integrations (homologação) e o header Authorization: Bearer rbk_SEU_TOKEN. Toda rota pode responder também 401 (chave ausente/inválida/revogada/expirada), 403 (sem a permissão) e 503 (não foi possível validar a chave) — veja códigos de resposta.

Campos marcados ✅ são obrigatórios. Valores monetários são sempre em reais (não centavos), salvo onde a rota avisa o contrário.

Sumário

GrupoOperaçõesRotas
Parâmetros45GET /parametros/desconto · PUT /parametros/desconto · GET /parametros/desconto/colaboradores/{nivel} · GET /parametros/desconto/colaborador/{id} · POST /parametros/desconto/colaborador/{id} · GET /parametros/alcada-compra/colaborador/{id} · POST /parametros/alcada-compra/colaborador/{id} · GET /parametros/financeiro · PUT /parametros/financeiro · GET /parametros/orcamento · PUT /parametros/orcamento · GET /parametros/estoque · PUT /parametros/estoque · GET /parametros/avisos · GET /parametros/avisos/{chave} · PUT /parametros/avisos/{chave} · GET /parametros/acolhimento · PUT /parametros/acolhimento · GET /parametros/acolhimento/validar/{pacienteId} · POST /parametros/acolhimento/atualizar-validacoes/{pacienteId} · GET /parametros/acolhimento/historico-confirmacoes/{pacienteId} · GET /parametros/servicos-online · GET /parametros/servicos-online/link · PATCH /parametros/servicos-online/habilitar · PATCH /parametros/servicos-online/agendamento/habilitar · PATCH /parametros/servicos-online/agendamento/mudanca-colaborador/habilitar · PATCH /parametros/servicos-online/confirmacao/habilitar · PATCH /parametros/servicos-online/prontuario/habilitar · PATCH /parametros/servicos-online/lista-medico-convenio/habilitar · PATCH /parametros/servicos-online/textos-informativos · GET /parametros/servicos-online/agendamento/perguntas · POST /parametros/servicos-online/agendamento/perguntas · GET /parametros/servicos-online/agendamento/perguntas/por-especialidade · PUT /parametros/servicos-online/agendamento/perguntas/{id} · DELETE /parametros/servicos-online/agendamento/perguntas/{id} · GET /parametros/servicos-online/agendamento/perguntas/colaborador/{colaboradorId} · POST /parametros/servicos-online/agendamento/perguntas/{perguntaId}/colaborador/{colaboradorId} · GET /parametros/termo · PUT /parametros/termo · GET /parametros/dashboard-permissoes/graficos · PUT /parametros/dashboard-permissoes/graficos · GET /parametros/dashboard-permissoes/dashboards · PUT /parametros/dashboard-permissoes/dashboards · GET /parametros/dashboard-atribuicao · PUT /parametros/dashboard-atribuicao

Parâmetros 45 operações

Regras de negócio e controle de acesso do tenant.

A chave de API nunca é tratada como administrador — níveis que exigem aprovação administrativa não são conferidos por estas rotas.

GET /parametros/desconto

Consultar parâmetros de desconto · Permissão: parametro:read

404 se nunca configurado.

Respostas

PUT /parametros/desconto

Atualizar parâmetros de desconto · Permissão: parametro:update

Busca a linha a atualizar com findFirst() sem filtro (pega a primeira que existir, sem checar ativo/deleted). Campo omitido não altera o valor já salvo.

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
descontoNivel1numbermín. 0; máx. 100
descontoNivel2numbermín. 0; máx. 100
descontoNivel3numbermín. 0; máx. 100
limiteParcelasDescontointegermín. 0

Respostas

GET /parametros/desconto/colaboradores/{nivel}

Colaboradores com permissão de um nível de desconto · Permissão: parametro:read

nivel: 1, 2 ou 3 — qualquer outro valor (inclusive não numérico) é tratado como nível 0.

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
nivelcaminho✅ simstring

Respostas

GET /parametros/desconto/colaborador/{id}

Nível de alçada de desconto de um colaborador · Permissão: parametro:read

Sem DescontoColaborador cadastrado, devolve 200 com nivelAlcada: "NIVEL0" e percentual: 0 — não é 404.

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
idcaminho✅ simintegerID do colaborador — mín. 1

Respostas

POST /parametros/desconto/colaborador/{id}

Conceder nível de desconto a um colaborador · Permissão: parametro:create

Hoje sempre falha por chave de API: o controller chama o use case com isAdmin fixo em false, e o use case exige isAdmin=true — toda chamada autenticada recebe 401, mesmo com o scope certo. nivel vai por query string, não pelo corpo, apesar de ser POST. Reportado ao time; documentado aqui pra não gerar confusão a mais em cima de um 401 que também é usado (em outras rotas) pra chave inválida.

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
idcaminho✅ simintegerID do colaborador — mín. 1
nivelquery✅ siminteger

Respostas

GET /parametros/alcada-compra/colaborador/{id}

Alçada de compra de um colaborador · Permissão: parametro:read

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
idcaminho✅ simintegerID do colaborador — mín. 1

Respostas

POST /parametros/alcada-compra/colaborador/{id}

Conceder alçada de compra a um colaborador · Permissão: parametro:create

Hoje sempre falha por chave de API — mesmo bug de isAdmin fixo em false da rota de nível de desconto. nivel vai por query string, não pelo corpo.

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
idcaminho✅ simintegerID do colaborador — mín. 1
nivelquerynãostringVazio remove a alçada — valores: NIVEL_2, NIVEL_3, NIVEL_4,

Respostas

GET /parametros/financeiro

Consultar parâmetros financeiros · Permissão: parametro:read

Sem configuração salva, devolve um objeto reduzido só com os 3 campos numéricos (sem id).

Respostas

PUT /parametros/financeiro

Atualizar parâmetros financeiros · Permissão: parametro:update

findFirst() sem filtro (pega a primeira linha que existir). Cuidado com categoriaPagamentoId/centroDeCustoId: omitir, mandar 0, "" ou false força esses dois campos para null, mesmo em cima de um registro que já tinha esses vínculos — diferente dos 3 campos numéricos, que ficam inalterados se omitidos.

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
limiteMaximoRecebimentonumberaceita null
limiteMaximoPagamentonumberaceita null
valorMinimoParcelanumberaceita null
categoriaPagamentoIdintegerFalsy (0/""/false/omitido) vira null — aceita null
centroDeCustoIdintegerFalsy (0/""/false/omitido) vira null — aceita null

Respostas

GET /parametros/orcamento

Consultar parâmetros de orçamento · Permissão: parametro:read

Atenção: sem configuração salva, esta rota devolve o número 0 cru como corpo da resposta (não um objeto, não 404) — comportamento real, não documentação errada.

Respostas

PUT /parametros/orcamento

Atualizar parâmetros de orçamento · Permissão: parametro:update

Inclui, entre outros, a chave que liga/desliga o bloqueio de criação pelo farol de rentabilidade (desabilitarBloqueioFarol). findFirst({where:{ativo:true}}) — diferente de desconto/financeiro, que não filtram. Nomes de campo do corpo divergem dos nomes na resposta: envie diasVencimento (não diasValidos) e consideracoes (não consideracoesGerais) — os demais batem 1:1. Sempre cria a linha se não existir (nunca devolve 0 no PUT, diferente do GET).

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
diasVencimentointegerVira diasValidos na resposta — aceita null
consideracoesstringVira consideracoesGerais na resposta — aceita null
parametroVermelhonumberaceita null
parametroAmarelonumberaceita null
requerAutorizacaoNivel2Amareloboolean
requerAutorizacaoNivel3Vermelhoboolean
requerAutorizacaoNivel3Roxoboolean
desabilitarBloqueioFarolboolean

Respostas

GET /parametros/estoque

Consultar parâmetros de estoque · Permissão: parametro:read

Sem configuração salva, devolve { reservaMedicamentoAtiva: false } sem id.

Respostas

PUT /parametros/estoque

Atualizar parâmetros de estoque · Permissão: parametro:update

Inclui, entre outros, se a reserva de medicamento por paciente está ativa. Este modelo não tem campo deleted (diferente de desconto/financeiro/orçamento/termo).

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
reservaMedicamentoAtivaboolean

Respostas

GET /parametros/avisos

Listar avisos parametrizados · Permissão: parametro:read

Catálogo fixo (hoje 3 chaves: AUTORIZACAO_VENCENDO, GRADE_PENDENTE_GUIA, GRADE_AUTORIZACAO_VENCENDO).

Respostas

GET /parametros/avisos/{chave}

Consultar aviso por chave · Permissão: parametro:read

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
chavecaminho✅ simstring

Respostas

PUT /parametros/avisos/{chave}

Atualizar aviso · Permissão: parametro:update

chave precisa ser uma das 3 do catálogo fixo (AUTORIZACAO_VENCENDO, GRADE_PENDENTE_GUIA, GRADE_AUTORIZACAO_VENCENDO) — outra chave dá 404. Se o aviso não suporta limiar (temLimiar:false), limiar enviado é descartado silenciosamente (fica null). Efeito colateral sem impacto na resposta: invalida cache Redis para GRADE_PENDENTE_GUIA/GRADE_AUTORIZACAO_VENCENDO.

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
chavecaminho✅ simstringvalores: AUTORIZACAO_VENCENDO, GRADE_PENDENTE_GUIA, GRADE_AUTORIZACAO_VENCENDO

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
habilitadoboolean
limiarintegeraceita null

Respostas

GET /parametros/acolhimento

Consultar parâmetros de acolhimento · Permissão: parametro:read

Devolve null (200) se nunca configurado.

Respostas

PUT /parametros/acolhimento

Atualizar parâmetros de acolhimento · Permissão: parametro:update

Corpo (application/json)

Objeto livre — o Swagger publicado não detalha os campos desta rota. Consulte antes o GET correspondente para ver a estrutura atual e envie só chaves que existam nela.

Respostas

GET /parametros/acolhimento/validar/{pacienteId}

Validar dados de acolhimento de um paciente · Permissão: parametro:read

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
pacienteIdcaminho✅ siminteger
dataAgendamentoquerynãostring (date-time)ISO 8601 — sem informar, usa agora
servicoIdsquerynãostringIDs de serviço separados por vírgula

Respostas

POST /parametros/acolhimento/atualizar-validacoes/{pacienteId}

Atualizar validações de acolhimento de um paciente · Permissão: parametro:update

Hoje sempre falha por chave de API: o controller exige req.colaborador?.id, que a autenticação por chave de API nunca popula — toda chamada recebe 401. Reportado ao time. Efeitos (não retornados, hipoteticamente se liberado): grava cpfValidadoEm/rgValidadoEm/enderecoValidadoEm/contatoValidadoEm no paciente e convenioValidadoEm nos vínculos em conveniosConfirmados, cria linhas em histórico de confirmação.

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
pacienteIdcaminho✅ siminteger

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
conveniosConfirmadosarray<integer>IDs de vínculo paciente-convênio a marcar como validado

Respostas

GET /parametros/acolhimento/historico-confirmacoes/{pacienteId}

Histórico de confirmações de acolhimento · Permissão: parametro:read

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
pacienteIdcaminho✅ siminteger

Respostas

GET /parametros/servicos-online

Consultar parâmetros de agendamento online · Permissão: parametro:read

Devolve null (200) se nunca configurado.

Respostas

PATCH /parametros/servicos-online/habilitar

Habilitar/desabilitar agendamento online · Permissão: parametro:update

O campo do corpo é habilitar, não habilitado (a spec já documentou o nome errado antes — corrigido aqui). Coerção é Boolean(habilitar) (truthy JS: qualquer string não vazia vira true; só false/0/""/null/undefined viram false). Todas as 6 rotas */habilitar mexem em UM único registro singleton (AgendamentoOnline, id fixo 1) e a resposta é sempre a linha inteira, não só o campo alterado — na primeira chamada de qualquer uma delas, os campos ainda não tocados assumem o default do schema (habilitarEtapaAgendamento começa true; os demais começam false), o que pode surpreender.

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
habilitarboolean

Respostas

PATCH /parametros/servicos-online/agendamento/habilitar

Habilitar/desabilitar etapa de agendamento online · Permissão: parametro:update

Campo do corpo é habilitar, não habilitado — ver detalhes em PATCH /parametros/servicos-online/habilitar. Afeta habilitarEtapaAgendamento.

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
habilitarboolean

Respostas

PATCH /parametros/servicos-online/agendamento/mudanca-colaborador/habilitar

Habilitar/desabilitar troca de colaborador no agendamento online · Permissão: parametro:update

Campo do corpo é habilitar, não habilitado — ver detalhes em PATCH /parametros/servicos-online/habilitar. Afeta permitirMudancaColaborador.

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
habilitarboolean

Respostas

PATCH /parametros/servicos-online/confirmacao/habilitar

Habilitar/desabilitar etapa de confirmação no agendamento online · Permissão: parametro:update

Campo do corpo é habilitar, não habilitado — ver detalhes em PATCH /parametros/servicos-online/habilitar. Afeta habilitarEtapaConfirmacao.

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
habilitarboolean

Respostas

PATCH /parametros/servicos-online/prontuario/habilitar

Habilitar/desabilitar etapa de prontuário no agendamento online · Permissão: parametro:update

Campo do corpo é habilitar, não habilitado — ver detalhes em PATCH /parametros/servicos-online/habilitar. Afeta habilitarEtapaProntuario.

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
habilitarboolean

Respostas

PATCH /parametros/servicos-online/lista-medico-convenio/habilitar

Habilitar/desabilitar lista de médico por convênio no agendamento online · Permissão: parametro:update

Campo do corpo é habilitar, não habilitado — ver detalhes em PATCH /parametros/servicos-online/habilitar. Afeta habilitarListaMedicoConvenio.

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
habilitarboolean

Respostas

PATCH /parametros/servicos-online/textos-informativos

Atualizar textos informativos do agendamento online · Permissão: parametro:update

Mesmo singleton AgendamentoOnline das rotas */habilitar — campo omitido fica inalterado (Prisma ignora undefined); na primeira criação, vira null.

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
textoEtapaConveniostringaceita null
textoEtapaEspecialidadestringaceita null
textoEtapaServicostringaceita null
textoEtapaDocumentosstringaceita null
textoEtapaProfissionalstringaceita null
textoEtapaDatastringaceita null
textoEtapaConfirmacaostringaceita null

Respostas

GET /parametros/servicos-online/agendamento/perguntas

Listar perguntas do agendamento online · Permissão: parametro:read

Respostas

POST /parametros/servicos-online/agendamento/perguntas

Criar pergunta do agendamento online · Permissão: parametro:create

Corpo (application/json) — obrigatório

Campos obrigatórios: pergunta

CampoTipoObrig.Descrição / restrições
perguntastring✅
especialidadeIdsarray<integer>Vazio/omitido = pergunta global, sem restrição de especialidade

Respostas

GET /parametros/servicos-online/agendamento/perguntas/por-especialidade

Listar perguntas por especialidade · Permissão: parametro:read

Sem especialidadeIds, só devolve as perguntas globais (sem restrição).

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
especialidadeIdsquerynãostringIDs separados por vírgula

Respostas

PUT /parametros/servicos-online/agendamento/perguntas/{id}

Atualizar pergunta do agendamento online · Permissão: parametro:update

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
idcaminho✅ simintegerID do registro desta rota (o Swagger publicado rotula como "ID do convênio" por engano de rótulo) — mín. 1

Corpo (application/json)

Nenhum campo obrigatório no nível principal.

CampoTipoObrig.Descrição / restrições
perguntastring
especialidadeIdsarray<integer>

Respostas

DELETE /parametros/servicos-online/agendamento/perguntas/{id}

Excluir pergunta do agendamento online · Permissão: parametro:delete

Exclusão lógica (deleted = true).

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
idcaminho✅ simintegerID do registro desta rota (o Swagger publicado rotula como "ID do convênio" por engano de rótulo) — mín. 1

Respostas

GET /parametros/servicos-online/agendamento/perguntas/colaborador/{colaboradorId}

Listar perguntas vinculadas a um colaborador · Permissão: parametro:read

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
colaboradorIdcaminho✅ siminteger

Respostas

POST /parametros/servicos-online/agendamento/perguntas/{perguntaId}/colaborador/{colaboradorId}

Vincular pergunta a um colaborador · Permissão: parametro:update

Idempotente (upsert numa chave composta, sem PK própria e sem timestamps). Não valida antecipadamente se perguntaId/colaboradorId existem — se algum não existir, a violação de FK do Postgres tende a virar um erro não tratado (500), diferente de outras rotas do módulo que checam antes com AppError.

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
perguntaIdcaminho✅ siminteger
colaboradorIdcaminho✅ siminteger

Respostas

GET /parametros/termo

Consultar parâmetros de termo de consentimento · Permissão: parametro:read

Devolve null (200) se nunca configurado.

Respostas

PUT /parametros/termo

Atualizar parâmetros de termo de consentimento · Permissão: parametro:update

Único PUT deste grupo que valida de verdade: conteudo é obrigatório. findFirst({where:{ativo:true, deleted:false}}).

Corpo (application/json) — obrigatório

Campos obrigatórios: conteudo

CampoTipoObrig.Descrição / restrições
conteudostring✅

Respostas

GET /parametros/dashboard-permissoes/graficos

Consultar permissão de gráficos de dashboard · Permissão: parametro:read

Controle de acesso a telas, não parâmetro de negócio. perfilPermissaoId é obrigatório na query.

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
perfilPermissaoIdquery✅ siminteger

Respostas

PUT /parametros/dashboard-permissoes/graficos

Atualizar permissão de gráficos de dashboard · Permissão: parametro:update

Controle de acesso: define quem vê quais gráficos.

Corpo (application/json)

Campos obrigatórios: perfilPermissaoId, permissoes

CampoTipoObrig.Descrição / restrições
perfilPermissaoIdinteger✅
permissoesarray<object>✅
permissoes[].idstring
permissoes[].habilitadoboolean

Respostas

GET /parametros/dashboard-permissoes/dashboards

Consultar permissão de dashboards · Permissão: parametro:read

Controle de acesso a telas, não parâmetro de negócio. perfilPermissaoId é obrigatório na query.

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
perfilPermissaoIdquery✅ siminteger

Respostas

PUT /parametros/dashboard-permissoes/dashboards

Atualizar permissão de dashboards · Permissão: parametro:update

Controle de acesso: define quem vê quais painéis.

Corpo (application/json)

Campos obrigatórios: perfilPermissaoId, permissoes

CampoTipoObrig.Descrição / restrições
perfilPermissaoIdinteger✅
permissoesarray<object>✅
permissoes[].idstring
permissoes[].habilitadoboolean

Respostas

GET /parametros/dashboard-atribuicao

Consultar atribuição de dashboard · Permissão: parametro:read

perfilPermissaoId é obrigatório na query — diferente das duas rotas de permissão acima, esta não ecoa o valor de volta na resposta.

Parâmetros

NomeOndeObrig.TipoDescrição / restrições
perfilPermissaoIdquery✅ siminteger

Respostas

PUT /parametros/dashboard-atribuicao

Atualizar atribuição de dashboard · Permissão: parametro:update

Controle de acesso: define qual dashboard cada colaborador/grupo enxerga.

Corpo (application/json)

Campos obrigatórios: perfilPermissaoId, dashboardIds

CampoTipoObrig.Descrição / restrições
perfilPermissaoIdinteger✅
dashboardIdsarray<string>✅
homeDashboardIdstringaceita null

Respostas

Continue por aqui: Visão geral e autenticação · Implantação pela API · Erros e boas práticas