Controle de Ponto

Registro de batidas de ponto, consulta por dia, eventos de calendário e solicitações de extensão.

Endpoints disponíveis

EndpointMétodoDescrição
/recordPunchPOSTRegistra uma ação de ponto unitária (ex.: BEGIN_DAY).
/sendPunchClockPOSTEnvia jornada completa ou parcial do dia.
/listPunchClockByDayPOSTLista batidas de ponto por data.
/getEventsPOSTRetorna eventos de calendário por range de datas.
/setEventPOSTCria ou atualiza evento(s) de calendário.
/listExtensionRequestsPOSTLista solicitações de extensão pendentes.
/approveRequestPOSTAprova ou rejeita uma solicitação de extensão.
Shape padrão de resposta: sucesso retorna { "err": false, "result": { ... } }; erro retorna { "err": true, "message": "..." }. Sempre verifique o campo err antes de consumir result.

POST /recordPunch

Registra uma ação unitária de ponto (ex.: início do dia, fim do dia). Use /sendPunchClock para enviar múltiplas marcações em uma única chamada.

Request body

CampoTipoObrigatórioDescrição
keystringSimChave criptografada da empresa.
usernamestringSimLogin do colaborador.
actionTypeenumSimTipo de batida: BEGIN_DAY, BEGIN_LUNCH, END_LUNCH ou END_DAY.
actionDatetimeSentstring ISO-8601SimData/hora da batida. Formato YYYY-MM-DDTHH:mm:ssZ.
hostnamestringSimNome da máquina ou dispositivo que registrou a batida.
locationTypestringSimoffice, home ou field.
sourcestringNãoOrigem do registro. Default: integration.
cURL
curl -X POST https://integrations.fhinck.com/recordPunch \
  -H "Content-Type: application/json" \
  -d '{
    "key": "SUA_CHAVE_DE_INTEGRACAO",
    "username": "joao.silva",
    "actionType": "BEGIN_DAY",
    "actionDatetimeSent": "2026-04-24T08:00:00Z",
    "hostname": "WORKSTATION-01",
    "locationType": "office"
  }'

POST /sendPunchClock

Envia uma ou mais marcações de ponto de um colaborador em uma única chamada. Pelo menos um dos campos beginDay, beginLunch, endLunch ou endDay é obrigatório. Formato ISO-8601: YYYY-MM-DDTHH:mm:ssZ.

Request body

CampoTipoObrigatórioDescrição
keystringSimChave criptografada da empresa.
usernamestringSimLogin do colaborador.
datestringSimData da batida. Formato YYYY-MM-DD.
beginDaystring ISO-8601CondicionalTimestamp de início do dia.
beginLunchstring ISO-8601CondicionalTimestamp de início do almoço.
endLunchstring ISO-8601CondicionalTimestamp de fim do almoço.
endDaystring ISO-8601CondicionalTimestamp de fim do dia.
hostnamestringSimNome da máquina ou dispositivo.
locationTypestringSimoffice, home ou field.
sourcestringNãoOrigem. Default: integration.
cURL — jornada completa
curl -X POST https://integrations.fhinck.com/sendPunchClock \
  -H "Content-Type: application/json" \
  -d '{
    "key": "SUA_CHAVE_DE_INTEGRACAO",
    "username": "joao.silva",
    "date": "2026-04-24",
    "beginDay": "2026-04-24T08:00:00Z",
    "beginLunch": "2026-04-24T12:00:00Z",
    "endLunch": "2026-04-24T13:00:00Z",
    "endDay": "2026-04-24T17:00:00Z",
    "hostname": "PC-JOAO",
    "locationType": "office"
  }'
Response 200
{
  "err": false,
  "result": {
    "success": true,
    "action_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "action_date": "2026-04-24",
    "username": "joao.silva"
  }
}

POST /listPunchClockByDay

Retorna todas as batidas de uma empresa em um dia específico, com filtro opcional por usuários.

CampoTipoObrigatórioDescrição
keystringSimChave criptografada da empresa.
datestringSimData. Formato YYYY-MM-DD.
usersstring[]NãoFiltra por logins. Se omitido, retorna todos.
cURL
curl -X POST https://integrations.fhinck.com/listPunchClockByDay \
  -H "Content-Type: application/json" \
  -d '{
    "key": "SUA_CHAVE_DE_INTEGRACAO",
    "date": "2026-04-24",
    "users": ["joao.silva"]
  }'

POST /getEvents

Retorna eventos de calendário (feriados, folgas, eventos especiais) por range de datas. Se users não for informado ou vier vazio, retorna todos os eventos no intervalo.

CampoTipoObrigatórioDescrição
keystringSimChave criptografada da empresa.
dateBeginstring (YYYY-MM-DD)SimData inicial do intervalo.
dateEndstring (YYYY-MM-DD)SimData final do intervalo.
usersstring[]NãoFiltro por login. Vazio = todos.
Dois formatos de payload aceitos (equivalentes): os campos podem ficar na raiz do body ou dentro de um objeto payload. Escolha o que for mais conveniente para seu cliente HTTP.

Formato 1: payload aninhado

cURL — payload aninhado
curl -X POST https://integrations.fhinck.com/getEvents \
  -H "Content-Type: application/json" \
  -d '{
    "key": "SUA_CHAVE_DE_INTEGRACAO",
    "payload": {
      "dateBegin": "2026-04-01",
      "dateEnd": "2026-04-30",
      "users": ["joao.silva"]
    }
  }'

Formato 2: chaves na raiz

cURL — chaves na raiz
curl -X POST https://integrations.fhinck.com/getEvents \
  -H "Content-Type: application/json" \
  -d '{
    "key": "SUA_CHAVE_DE_INTEGRACAO",
    "dateBegin": "2026-04-01",
    "dateEnd": "2026-04-30",
    "users": ["joao.silva"]
  }'
Response 200
{
  "err": false,
  "result": {
    "events": [
      {
        "id": "EVT-123",
        "title": "Comunicado",
        "users": ["joao.silva"],
        "dateTimeBegin": "2026-04-01 08:00:00",
        "dateTimeEnd": "2026-04-30 18:00:00",
        "lastUpdate": "2026-04-29 01:01:00",
        "active": true
      }
    ]
  }
}

POST /setEvent

Cria ou atualiza eventos no dataset da empresa. Aceita múltiplos eventos via array events (cada item deve conter ao menos id). Quando o id não existir na base, o evento é criado com defaults (por exemplo, active: true quando não informado). Em atualizações, apenas os campos enviados são alterados.

Aceita o array events tanto na raiz do body quanto aninhado em payload.
cURL — criar/atualizar eventos
curl -X POST https://integrations.fhinck.com/setEvent \
  -H "Content-Type: application/json" \
  -d '{
    "key": "SUA_CHAVE_DE_INTEGRACAO",
    "updatedBy": "usuario@empresa.com",
    "payload": {
      "events": [
        { "id": "EVT-001", "active": true, "dateTimeBegin": "2026-04-01 08:00:00" },
        { "id": "EVT-002", "name": "Atualização", "workstation": "locked" }
      ]
    }
  }'
Response 200
{ "err": false, "message": "Eventos processados com sucesso" }

POST /listExtensionRequests

Lista solicitações de extensão de jornada pendentes de aprovação para um gestor.

CampoTipoObrigatório
keystringSim
emailstringSim

POST /approveRequest

Aprova ou rejeita uma solicitação de extensão de jornada.

CampoTipoObrigatórioDescrição
keystringSimChave criptografada da empresa.
employeestringSimLogin do colaborador.
managerEmailstringSimEmail do gestor aprovador.
approvedbooleanSimtrue para aprovar, false para rejeitar.