Saltar para o conteúdo

Marca o ponto

POST/api/time-tracking/punches

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.

Empregado cadastrado no estabelecimento do espaço (sem cadastro: 403 `notEmployee`, com `errors[0].param` = `employee`), depois de ver o aviso (409 `noticeRequired`). Grava o registro tipo 7 com o próximo NSR do estabelecimento, a hora do servidor (o relógio do aparelho não conta), o coletor (`01` app mobile, `02` navegador; padrão `02`), on-line e o hash SHA-256 encadeado. Grava o IP (o último salto do proxy confiável, nunca um `X-Forwarded-For` enviado pelo cliente), a origem e o navegador e, se vierem, latitude, longitude e precisão; sem elas (ou inválidas), a marcação entra como "sem localização". **Nada recusa a marcação por horário ou dia; por localização, só a cerca virtual do espaço no modo `BLOCK`:** fora do raio, 422 `geofenceOutside` (a mensagem traz a distância); sem localização, 422 `geofenceNoLocation` (pede para ativar a localização). No modo `FLAG` a marcação entra com `outsideRadius`. O mesmo `clientRequestId` devolve a marcação já gravada (200, `replayed: true`), sem criar outra. Não existe rota para alterar ou apagar 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)
clientRequestIdopcionalstringmax 64
collectoropcional01 | 02
latitudeopcionalnumber
longitudeopcionalnumber
accuracyMetersopcionalnumber

Respostas

CódigoDescrição
200Toque duplo: a marcação do mesmo `clientRequestId`, já gravada (`replayed: true`).
201Marcaçã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.
409Aviso de IP e localização não visto (`noticeRequired`) ou espaço sem estabelecimento (`noEstablishment`).
422Dado inválido (CPF ou CNPJ com dígito errado, dia, período, campo obrigatório, pessoa sem acesso ao espaço, CPF do responsável ausente).

Exemplo com curl

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