Marca o ponto
POST/api/time-tracking/punches
- Auth
- Requires a token
- API key:
- No API key accepted
- X-CommunityId
X-CommunityIdSend the X-CommunityId of the community the operation happens in.
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
| Name | Type | Description |
|---|---|---|
X-CommunityIdoptional | string (uuid) | ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade. |
Request body application/json
| Name | Type | Description |
|---|---|---|
spaceIdoptional | string (uuid) | |
clientRequestIdoptional | string | max 64 |
collectoroptional | 01 | 02 | |
latitudeoptional | number | |
longitudeoptional | number | |
accuracyMetersoptional | number |
Responses
| Status | Description |
|---|---|
200 | Toque duplo: a marcação do mesmo `clientRequestId`, já gravada (`replayed: true`). |
201 | Marcação gravada. |
401 | Token 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`). |
403 | Só 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`. |
404 | Recurso não encontrado. |
409 | Aviso de IP e localização não visto (`noticeRequired`) ou espaço sem estabelecimento (`noEstablishment`). |
422 | Dado 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). |
curl example
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 '{}'