Referência

Fichas de beleza (dados sensíveis)

A ficha técnica viva de cada cliente (perfis de cabelo, pele, unhas e pestanas, condições de saúde e alergias), os testes de sensibilidade, os registos técnicos (fórmulas, receitas, técnicas), os consentimentos para fotografias, as fotografias, e o que se verifica e regista em cada atendimento. São dados pessoais, em parte de saúde: a chave só os alcança se o dono da empresa lhe deu, ao criá-la, acesso reforçado com um consentimento que cubra as fichas de beleza (versão 2 ou posterior), com endereços de rede e validade curta, e cada pedido fica registado. Ver Dados sensíveis.

A ficha técnica viva de cada cliente (perfis de cabelo, pele, unhas e pestanas, condições de saúde e alergias), os testes de sensibilidade, os registos técnicos (fórmulas, receitas, técnicas), os consentimentos para fotografias, as fotografias, e o que se verifica e regista em cada atendimento. São dados pessoais, em parte de saúde: a chave só os alcança se o dono da empresa lhe deu, ao criá-la, acesso reforçado com um consentimento que cubra as fichas de beleza (versão 2 ou posterior), com endereços de rede e validade curta, e cada pedido fica registado. Ver Dados sensíveis.

OperaçãoO que faz
GET /api/beleza/clientes/{clienteId}/fichaA ficha técnica de um cliente: perfis, preferências, condições, testes, consentimentos, ciclos, registos técnicos e fotografias.
PUT /api/beleza/clientes/{clienteId}/fichaDefine a ficha técnica de um cliente: os perfis de cabelo, pele, unhas e pestanas, as preferências, a data da última química e as notas da equipa.
POST /api/beleza/clientes/{clienteId}/condicoesRegista uma condição (gravidez, alergia…) na ficha do cliente.
POST /api/beleza/condicoes/{id}/removerRemove uma condição da ficha, com motivo.
POST /api/beleza/clientes/{clienteId}/testesAplica um teste de sensibilidade: fica pendente até alguém registar o resultado depois do tempo de leitura.
POST /api/beleza/testes/{id}/resultadoRegista o resultado de um teste de sensibilidade.
POST /api/beleza/testes/{id}/anularAnula um teste, com motivo.
GET /api/beleza/clientes/{clienteId}/registosOs registos técnicos de um cliente (fórmulas, receitas, técnicas).
POST /api/beleza/clientes/{clienteId}/registosCria um registo técnico na ficha do cliente.
POST /api/beleza/registos/{id}/repetirCria um registo técnico novo a partir de um existente (repetir a mesma fórmula ou receita).
POST /api/beleza/clientes/{clienteId}/consentimentosRegista o consentimento do cliente para fotografias, para uma finalidade e uma versão do texto.
POST /api/beleza/consentimentos/{id}/revogarRevoga um consentimento do cliente.
POST /api/beleza/clientes/{clienteId}/fotosAnexa uma fotografia à ficha de um cliente.
GET /api/beleza/fotos/{id}Descarrega uma fotografia de um cliente.
GET /api/beleza/clientes/{clienteId}/acessosQuem consultou a ficha de um cliente e quando.
GET /api/beleza/marcacoes/{marcacaoId}/verificacaoO que a ficha do cliente tem a dizer sobre os serviços de uma marcação, numa fase do atendimento (avisos e bloqueios).
POST /api/beleza/verificar-pedidoAntes de marcar: o que a ficha do cliente tem a dizer sobre os serviços que se vão marcar (só avisos).
GET /api/beleza/marcacoes/{marcacaoId}/cartaoO cartão do atendimento: o cliente, as condições, as preferências, os consentimentos, a verificação de segurança, os serviços, os kits usados e as próximas visitas.
POST /api/beleza/marcacoes/{marcacaoId}/respostasRegista a resposta do cliente a uma pergunta do questionário de segurança (sim ou não) numa marcação.
POST /api/beleza/marcacoes/{marcacaoId}/dosesRegista uma dose de produto usada num atendimento.
GET/api/beleza/clientes/{clienteId}/ficha#

A ficha técnica de um cliente: perfis, preferências, condições, testes, consentimentos, ciclos, registos técnicos e fotografias.

  • Permissão Beleza.Ler

As fotografias só vêm se o cliente consentiu: sem consentimento, fotosOcultasPorFaltaDeConsentimento vem verdadeiro.

Parâmetros

NomeOndeTipoObrigatório
clienteIdno caminhoidentificador (UUID)sim

Pedido

curl
curl 'https://<endereço-da-API>/api/beleza/clientes/<clienteId>/ficha' \
  -H 'X-Api-Key: <a-sua-chave>'
PUT/api/beleza/clientes/{clienteId}/ficha#

Define a ficha técnica de um cliente: os perfis de cabelo, pele, unhas e pestanas, as preferências, a data da última química e as notas da equipa.

  • Permissão Beleza.Ler

Devolve 204, sem corpo.

Parâmetros

NomeOndeTipoObrigatório
clienteIdno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · FichaPedido)

CampoTipoObrigatórioSignificado
capilarobjecto ou nulo
capilar.texturatexto ou nulo
capilar.densidadetexto ou nulo
capilar.porosidadetexto ou nulo
capilar.comprimentotexto ou nulo
capilar.estadotexto ou nuloO estado actual.
capilar.corNaturaltexto ou nulo
capilar.corActualtexto ou nulo
capilar.brancosPctnúmero inteiro ou nulo
capilar.couroCabeludotexto ou nulo
capilar.quedatexto ou nulo
capilar.historicoDeQuimicatexto ou nulo
peleobjecto ou nulo
pele.tipotexto ou nulo
pele.fototipotexto ou nulo
pele.sensibilidadetexto ou nulo
pele.manchastexto ou nulo
pele.acnetexto ou nulo
pele.rosaceatexto ou nulo
pele.cicatrizestexto ou nulo
pele.exposicaoSolartexto ou nulo
pele.produtosEmUsotexto ou nulo
pele.tratamentosRecentestexto ou nulo
unhasobjecto ou nulo
unhas.tipotexto ou nulo
unhas.formatotexto ou nulo
unhas.comprimentotexto ou nulo
unhas.historicoDeLesoestexto ou nulo
unhas.coresHabituaistexto ou nulo
pestanasobjecto ou nulo
pestanas.formatotexto ou nulo
pestanas.curvaturatexto ou nulo
pestanas.espessuratexto ou nulo
pestanas.formaDeSobrancelhatexto ou nulo
preferenciasobjecto ou nulo
preferencias.profissionalHabitualIdidentificador (UUID) ou nulo
preferencias.bebidatexto ou nulo
preferencias.prefereSilencioverdadeiro/falso ou nulo
preferencias.musicatexto ou nulo
preferencias.canalDeContactotexto ou nulo
preferencias.linguatexto ou nulo
ultimaQuimicaEmdata (AAAA-MM-DD) ou nulo
notasDaEquipatexto ou nulo

Pedido

curl
curl -X PUT 'https://<endereço-da-API>/api/beleza/clientes/<clienteId>/ficha' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Content-Type: application/json' \
  -d '{}'
POST/api/beleza/clientes/{clienteId}/condicoes#

Regista uma condição (gravidez, alergia…) na ficha do cliente.

  • Permissão Beleza.Ler
  • Idempotência aceita Idempotency-Key

condicao é um valor de contra-indicação (por exemplo, Gravidez, Amamentacao, AlergiaPpd, AlergiaAmoniaco, AlergiaLatex ou AlergiaAcrilatos); fonte (por omissão DeclaradaPeloCliente) e nota.

Parâmetros

NomeOndeTipoObrigatório
clienteIdno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · CondicaoPedido)

CampoTipoObrigatório
condicaotextosim
fontetexto ou nulo
notatexto ou nulo

Resposta

Devolve 201 com o id do registo criado.

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/clientes/<clienteId>/condicoes' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "condicao": "texto"
}'
POST/api/beleza/condicoes/{id}/remover#

Remove uma condição da ficha, com motivo.

  • Permissão Beleza.Ler
  • Idempotência aceita Idempotency-Key

Devolve 204, sem corpo.

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · MotivoPedido)

CampoTipoObrigatório
motivotextosim

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/condicoes/<id>/remover' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "motivo": "texto"
}'
POST/api/beleza/clientes/{clienteId}/testes#

Aplica um teste de sensibilidade: fica pendente até alguém registar o resultado depois do tempo de leitura.

  • Permissão Beleza.Ler
  • Idempotência aceita Idempotency-Key

classe: Tinta, Descolorante, Alisamento, ColaDePestanas, GelOuAcrilato ou Henna. realizadoEmUtc em branco é agora.

Parâmetros

NomeOndeTipoObrigatório
clienteIdno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · TestePedido)

CampoTipoObrigatório
classetextosim
produtotexto ou nulo
realizadoEmUtcdata e hora (ISO 8601) ou nulo
profissionalIdidentificador (UUID) ou nulo

Resposta

Devolve 201 com o id do registo criado.

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/clientes/<clienteId>/testes' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "classe": "texto"
}'
POST/api/beleza/testes/{id}/resultado#

Regista o resultado de um teste de sensibilidade.

  • Permissão Beleza.Ler
  • Idempotência aceita Idempotency-Key

resultado: Negativo ou Positivo; nota opcional.

Devolve 204, sem corpo.

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · ResultadoPedido)

CampoTipoObrigatório
resultadotextosim
notatexto ou nulo

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/testes/<id>/resultado' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "resultado": "texto"
}'
POST/api/beleza/testes/{id}/anular#

Anula um teste, com motivo.

  • Permissão Beleza.Ler
  • Idempotência aceita Idempotency-Key

Devolve 204, sem corpo.

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · MotivoPedido)

CampoTipoObrigatório
motivotextosim

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/testes/<id>/anular' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "motivo": "texto"
}'
GET/api/beleza/clientes/{clienteId}/registos#

Os registos técnicos de um cliente (fórmulas, receitas, técnicas).

  • Permissão Beleza.Ler

maximo (por omissão 60).

Parâmetros

NomeOndeTipoObrigatório
clienteIdno caminhoidentificador (UUID)sim
maximona pesquisanúmero inteiro

Pedido

curl
curl 'https://<endereço-da-API>/api/beleza/clientes/<clienteId>/registos' \
  -H 'X-Api-Key: <a-sua-chave>'
POST/api/beleza/clientes/{clienteId}/registos#

Cria um registo técnico na ficha do cliente.

  • Permissão Beleza.Ler
  • Idempotência aceita Idempotency-Key

tipo: FormulaDeCor, ReceitaDeQuimica, ReceitaDeTrancas, TecnicaDeUnhasOuPestanas, ParametrosDeEquipamento ou NotaTecnica. Os restantes campos (componentes, oxidante, tempo de pausa, técnica, zonas, parâmetros, resultado e «fazer diferente») dependem do tipo.

Parâmetros

NomeOndeTipoObrigatório
clienteIdno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · RegistoPedido)

CampoTipoObrigatórioSignificado
servicoDaMarcacaoIdidentificador (UUID) ou nulo
tipotextosim
componenteslista de objectos ou nulo
componentes[].produtotextosim
componentes[].produtoIdidentificador (UUID) ou nuloO artigo.
componentes[].quantidadenúmerosimA quantidade.
componentes[].unidadetextosim
oxidanteVolumenúmero inteiro ou nulo
oxidanteMlnúmero ou nulo
tempoDePausaMinnúmero inteiro ou nulo
tecnicatexto ou nulo
zonastexto ou nulo
parametrostexto ou nulo
resultadotexto ou nulo
fazerDiferentetexto ou nulo

Resposta

Devolve 201 com o id do registo criado.

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/clientes/<clienteId>/registos' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "tipo": "texto"
}'
POST/api/beleza/registos/{id}/repetir#

Cria um registo técnico novo a partir de um existente (repetir a mesma fórmula ou receita).

  • Permissão Beleza.Ler
  • Idempotência aceita Idempotency-Key

servicoDaMarcacaoId (opcional) liga o novo registo ao serviço onde se repete. Devolve 201 com o id do novo registo.

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · RepetirPedido)

CampoTipoObrigatório
servicoDaMarcacaoIdidentificador (UUID) ou nulo

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/registos/<id>/repetir' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{}'
POST/api/beleza/clientes/{clienteId}/consentimentos#

Regista o consentimento do cliente para fotografias, para uma finalidade e uma versão do texto.

  • Permissão Beleza.Ler
  • Idempotência aceita Idempotency-Key

finalidade: UsoInterno, PortfolioSemRosto, PortfolioComRosto ou Publicidade. Cada finalidade é um consentimento à parte, revogável.

Parâmetros

NomeOndeTipoObrigatório
clienteIdno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · ConsentimentoPedido)

CampoTipoObrigatório
finalidadetextosim
versaoDoTextotexto ou nulo

Resposta

Devolve 201 com o id do registo criado.

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/clientes/<clienteId>/consentimentos' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "finalidade": "texto"
}'
POST/api/beleza/consentimentos/{id}/revogar#

Revoga um consentimento do cliente.

  • Permissão Beleza.Ler
  • Idempotência aceita Idempotency-Key

motivo é opcional.

Devolve 204, sem corpo.

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · MotivoPedido)

CampoTipoObrigatório
motivotextosim

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/consentimentos/<id>/revogar' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "motivo": "texto"
}'
POST/api/beleza/clientes/{clienteId}/fotos#

Anexa uma fotografia à ficha de um cliente.

  • Permissão Beleza.Ler

Envio de ficheiro (multipart/form-data): a fotografia vai no campo ficheiro e o momento (Antes, Depois ou Referencia) é obrigatório; servicoDaMarcacaoId e nota são opcionais.

Um ficheiro vazio, ou que exceda o limite de tamanho, é recusado.

Parâmetros

NomeOndeTipoObrigatório
clienteIdno caminhoidentificador (UUID)sim
momentona pesquisatextosim
servicoDaMarcacaoIdna pesquisaidentificador (UUID)
notana pesquisatexto

Resposta

Devolve 201 com o id do registo criado.

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/clientes/<clienteId>/fotos' \
  -H 'X-Api-Key: <a-sua-chave>'
GET/api/beleza/fotos/{id}#

Descarrega uma fotografia de um cliente.

  • Permissão Beleza.Ler

Parâmetros

NomeOndeTipoObrigatório
idno caminhoidentificador (UUID)sim

Resposta

Devolve 200 com a imagem.

Pedido

curl
curl 'https://<endereço-da-API>/api/beleza/fotos/<id>' \
  -H 'X-Api-Key: <a-sua-chave>'
GET/api/beleza/clientes/{clienteId}/acessos#

Quem consultou a ficha de um cliente e quando.

  • Permissão Beleza.FichaTodos

maximo (por omissão 100).

Parâmetros

NomeOndeTipoObrigatório
clienteIdno caminhoidentificador (UUID)sim
maximona pesquisanúmero inteiro

Pedido

curl
curl 'https://<endereço-da-API>/api/beleza/clientes/<clienteId>/acessos' \
  -H 'X-Api-Key: <a-sua-chave>'
GET/api/beleza/marcacoes/{marcacaoId}/verificacao#

O que a ficha do cliente tem a dizer sobre os serviços de uma marcação, numa fase do atendimento (avisos e bloqueios).

  • Permissão Beleza.Ler

fase: Marcar, Iniciar (por omissão) ou Concluir.

Parâmetros

NomeOndeTipoObrigatório
marcacaoIdno caminhoidentificador (UUID)sim
fasena pesquisatexto

Pedido

curl
curl 'https://<endereço-da-API>/api/beleza/marcacoes/<marcacaoId>/verificacao' \
  -H 'X-Api-Key: <a-sua-chave>'
POST/api/beleza/verificar-pedido#

Antes de marcar: o que a ficha do cliente tem a dizer sobre os serviços que se vão marcar (só avisos).

  • Permissão Beleza.Ler
  • Idempotência aceita Idempotency-Key

Ajuda a recepção a pedir o teste a tempo. clienteId e servicos. Não grava nada.

Corpo do pedido (JSON · VerificarPedidoQuery)

CampoTipoObrigatórioSignificado
clienteIdidentificador (UUID)simO cliente do documento.
servicoslista de objectossim
servicos[].servicoIdidentificador (UUID)sim
servicos[].iniciodata e hora (ISO 8601)sim

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/verificar-pedido' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "clienteId": "00000000-0000-0000-0000-000000000000",
  "servicos": [
    {
      "servicoId": "00000000-0000-0000-0000-000000000000",
      "inicio": "2026-10-12T09:00:00Z"
    }
  ]
}'
GET/api/beleza/marcacoes/{marcacaoId}/cartao#

O cartão do atendimento: o cliente, as condições, as preferências, os consentimentos, a verificação de segurança, os serviços, os kits usados e as próximas visitas.

  • Permissão Beleza.Atender

Parâmetros

NomeOndeTipoObrigatório
marcacaoIdno caminhoidentificador (UUID)sim

Pedido

curl
curl 'https://<endereço-da-API>/api/beleza/marcacoes/<marcacaoId>/cartao' \
  -H 'X-Api-Key: <a-sua-chave>'
POST/api/beleza/marcacoes/{marcacaoId}/respostas#

Regista a resposta do cliente a uma pergunta do questionário de segurança (sim ou não) numa marcação.

  • Permissão Beleza.Atender
  • Idempotência aceita Idempotency-Key

condicao e sim.

Devolve 204, sem corpo.

Parâmetros

NomeOndeTipoObrigatório
marcacaoIdno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · RespostaPedido)

CampoTipoObrigatório
condicaotextosim
simverdadeiro/falsosim

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/marcacoes/<marcacaoId>/respostas' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "condicao": "texto",
  "sim": false
}'
POST/api/beleza/marcacoes/{marcacaoId}/doses#

Regista uma dose de produto usada num atendimento.

  • Permissão Beleza.Atender
  • Idempotência aceita Idempotency-Key

quantidade, unidade (Gramas, Mililitros ou Unidades), o produto (produtoId ou produtoNome), ePadrao e descartavel; servicoDaMarcacaoId liga-a a um serviço.

Parâmetros

NomeOndeTipoObrigatório
marcacaoIdno caminhoidentificador (UUID)sim

Corpo do pedido (JSON · DosePedido)

CampoTipoObrigatórioSignificado
servicoDaMarcacaoIdidentificador (UUID) ou nulo
produtoIdidentificador (UUID) ou nuloO artigo.
produtoNometexto ou nulo
quantidadenúmerosimA quantidade.
unidadetextosim
ePadraoverdadeiro/falsosim
descartavelverdadeiro/falsosim

Resposta

Devolve 201 com o id do registo criado.

Pedido

curl
curl -X POST 'https://<endereço-da-API>/api/beleza/marcacoes/<marcacaoId>/doses' \
  -H 'X-Api-Key: <a-sua-chave>' \
  -H 'Idempotency-Key: <um-GUID-novo>' \
  -H 'Content-Type: application/json' \
  -d '{
  "quantidade": 0,
  "unidade": "texto",
  "ePadrao": false,
  "descartavel": false
}'