Pular para o conteúdo

Grava uma nova versão das regras do ponto

POST/api/time-tracking/rules

Auth
Exige token
Chave de API:
Não aceita chave de API
X-CommunityId
X-CommunityId Envie o X-CommunityId da comunidade em que a operação acontece.

Gestão do ponto. Só inserção: corrigir é gravar outra versão (para a mesma vigência, vale a última gravada). Com `memberId`, é a exceção daquela pessoa. Vigência dentro de um mês fechado (ou antes dele) é recusada com 422 (`monthClosed`). Nenhuma regra recusa marcação.

Headers

NomeTipoDescrição
X-CommunityIdopcionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Corpo da requisição application/json

NomeTipoDescrição
spaceIdopcionalstring (uuid)
memberIdopcionalstring (uuid)
effectiveFromobrigatóriostring (date)
rulesobrigatórioobjectRegras do ponto (PTRP). Todo número é um padrão configurável; nenhuma regra recusa marcação (art. 74, I). Campos ausentes recebem o padrão; campo desconhecido é recusado (422).
rules.scheduleopcionalobjectHorário contratual: pares de entrada e saída por dia da semana (`"0"` domingo a `"6"` sábado), `hh:mm`. Saída antes da entrada cruza a meia-noite. Dia sem pares é dia não útil.
rules.weekStartsOnopcionalintegerPrimeiro dia da semana para a extra semanal (1 = segunda). · ≥ 0, ≤ 6
rules.toleranceopcionalobjectArt. 58, §1º da CLT: dentro dos dois limites o dia conta como o contrato; acima, conta a diferença inteira.
rules.tolerance.perPunchMinutesopcionalinteger
rules.tolerance.dailyMinutesopcionalinteger
rules.overtimeopcionalobject
rules.overtime.dailyopcionalobject
rules.overtime.weeklyopcionalobject
rules.overtime.nonWorkingDayopcionalobject
rules.overtime.holidayopcionalobject
rules.overtime.dailyLimitMinutesopcionalintegerAcima disso o dia é sinalizado (não recusa nada).
rules.overtime.destinationopcionalpaid | bankPara onde vai a extra dos dias em que esta versão vale: `paid` (paga, padrão) ou `bank` (banco de horas, minuto a minuto; no banco, o que faltar do contrato depois da tolerância é debitado).
rules.hourBankopcionalobjectBanco de horas: um lote por mês de origem, que vence ao fim do mês de origem + validade - 1 (janeiro com 6 vence no fim de junho). O débito consome os lotes mais antigos primeiro (FIFO); o que vence sai como `expiredMinutes`, para pagar.
rules.hourBank.validityMonthsopcionalinteger≥ 1, ≤ 12
rules.weeklyRestDayopcionalintegerDia do descanso semanal remunerado (DSR, AEJ registro 07 tipo 1); 0 = domingo (padrão), null = nenhum. · ≥ 0, ≤ 6
rules.nightopcionalobjectNoturno (art. 73 da CLT): os minutos na janela (padrão 22h a 5h) sempre contam. `enabled` aplica o adicional (`multiplier`) e, com `reducedHour`, a hora noturna reduzida de 52min30s (8 horas contadas para 7 de relógio), na jornada trabalhada e na contratual.
rules.night.enabledopcionalboolean
rules.night.startopcionalstring
rules.night.endopcionalstring
rules.night.reducedHouropcionalboolean
rules.night.multiplieropcionalnumber
rules.minimumBreakopcionalobjectArt. 71 da CLT; só sinaliza.
rules.minimumBreak.over6hMinutesopcionalinteger
rules.minimumBreak.from4to6hMinutesopcionalinteger

Respostas

CódigoDescrição
201Versão gravada.
401Token ausente, inválido ou expirado; token de outra comunidade (o `X-CommunityId` ou o `communityId` do corpo não é o do token); token antigo ou de uma sessão encerrada (troca de senha, convite aceito). Nesses casos a mensagem pede para entrar de novo (`auth.signInAgain`).
403Só a gestão do ponto (owner, admin, financeiro): `timeTracking.errors.managementOnly`; quem não tem cadastro de empregado: `notEmployee`; sessão de suporte do SuperAdmin: `supportSession`.
404Recurso não encontrado.
422Regra inválida (`rulesInvalid`, com o caminho do campo em `errors[0].param`), horário de mais de 16 h num dia (`scheduleTooLong`) ou mês fechado (`monthClosed`).

Exemplo com curl

curl -X POST "https://api.memberfy.net/api/time-tracking/rules" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{"effectiveFrom":"string","rules":{}}'