Master Data

Sincronize colaboradores, gestores, departamentos, cargos e regiões com a Plataforma Fhinck.

Endpoint

POST https://integrations.fhinck.com/masterData

Cria ou atualiza dados de estrutura organizacional. Operação idempotente — enviar o mesmo registro duas vezes não gera duplicidade.

Envio recomendado: Envie deltas diários — apenas registros criados, atualizados ou desativados desde o último envio. Não é necessário enviar a base completa a cada dia (dump full). Dumps frequentes aumentam latência e consumo de quota sem benefício.

Request body

CampoTipoObrigatórioDescrição
keystringSimChave criptografada de autenticação da empresa.
dataobjectSimObjeto contendo as listas de entidades.
data.employeesarraySimLista de colaboradores. Pode ser vazia [].
data.managersarrayNãoLista de gestores.
data.departmentsarrayNãoLista de departamentos.
data.regionsarrayNãoLista de regiões.
data.rolesarrayNãoLista de cargos.

Exemplo mínimo — apenas colaboradores

Começar com o envio mínimo é a forma mais rápida de validar a integração. Apenas key + data.employees com campos obrigatórios:

cURL — mínimo
curl -X POST https://integrations.fhinck.com/masterData \
  -H "Content-Type: application/json" \
  -d '{
    "key": "SUA_CHAVE_DE_INTEGRACAO",
    "data": {
      "employees": [
        {
          "login": "joao.silva",
          "name": "João Silva",
          "department": "COORD",
          "role": "ANALISTA",
          "active": true
        }
      ]
    }
  }'

Schema: Employee

CampoTipoObrigatórioDescrição
loginstringSimIdentificador único do colaborador.
namestringSimNome completo.
departmentstringSimCódigo do departamento folha.
department_pathstringNãoCadeia hierárquica de códigos separados por _. Ex.: DIR_GER_SUP.
rolestringSimCódigo do cargo.
regionstringNãoCódigo da região.
activebooleanSimtrue para colaborador ativo.
vacationbooleanNãotrue se em férias. Default: false.
vacation_date_instring (date)NãoInício das férias. Formato YYYY-MM-DD.
vacation_date_outstring (date)NãoFim das férias. Formato YYYY-MM-DD.
interfaceobjectNãoConfigurações de jornada e controle de ponto. Ver schema detalhado.

Configuração detalhada de interface

O objeto interface em cada Employee controla jornada, controle de ponto e comportamento do coletor no dispositivo. Todos os campos têm default — envie apenas os que quiser sobrescrever.

Jornada

CampoTipoDefaultDescrição
journey_typestringflexclassic (jornada fixa) ou flex (flexível).
begin_journeyobjectHorário de início por dia da semana (monday..sunday). Ex.: {"monday": "08:00:00"}.
end_journeyobjectHorário de fim por dia da semana. Formato HH:MM:SS.
begin_lunch_timeobjectHorário de início do almoço por dia da semana.
end_lunch_timeobjectHorário de fim do almoço por dia da semana.
journey_timeobjectDuração total da jornada em minutos por dia. Ex.: {"monday": 540} (9h).
journey_first_period_timeinteger0Duração do primeiro período em minutos (antes do almoço).
journey_interval_timeinteger0Duração do intervalo de almoço em minutos.
margin_for_time_limitsinteger0Tolerância em minutos para limites de horário.
journey_edit_enabledbooleanfalsePermite que o colaborador edite a jornada registrada.
journey_max_historyinteger31Dias máximos de histórico de jornada acessível ao colaborador.

Controle de ponto

CampoTipoDefaultDescrição
punch_clock_activebooleantrueControle de ponto ativado para o colaborador.
lock_by_punchbooleantrueBloqueia a estação entre batidas (ex.: durante almoço).
lock_by_punch_delayinteger0Atraso em segundos antes do bloqueio automático.
lock_out_of_journeybooleanfalseBloqueia a estação fora do horário de jornada.
collector_control_disabledbooleantrueDesabilita controles manuais do coletor.
ask_journey_extension_timeoutinteger0Timeout em segundos para solicitar extensão automaticamente.

Extra time e justificativas

CampoTipoDefaultDescrição
extra_time.allowedbooleantruePermite solicitação de horas extras.
justification_listarrayLista de justificativas pré-aprovadas. Cada item: { "activity": "Reunião externa" }.

Autenticação do coletor

CampoTipoDefaultDescrição
auth.token_periodstringPeríodo de validade do token (ex.: "24h", "7d").
auth.token_scopestringEscopo do token do coletor.

Schema: Manager

CampoTipoObrigatórioDescrição
emailstringSimEmail corporativo do gestor.
namestringSimNome completo.
departmentstringSimCódigo do departamento.
department_pathstringNãoCadeia hierárquica. Ex.: DIR_GER.
rolestringSimCódigo do cargo.
regionstringNãoCódigo da região.
activebooleanSimtrue para gestor ativo.
profilestringSimadmin, analytics, approver2 ou ti.

Schemas: Department, Region, Role

EntidadeCampos obrigatóriosCampos opcionais
Departmentcode, namedepartment_level (integer)
Regioncode, name
Rolecode, name

Exemplo completo — todas as entidades

cURL
curl -X POST https://integrations.fhinck.com/masterData \
  -H "Content-Type: application/json" \
  -d '{
    "key": "SUA_CHAVE_DE_INTEGRACAO",
    "data": {
      "employees": [
        {
          "login": "joao.silva",
          "name": "João Silva",
          "department": "COORD",
          "department_path": "DIR_GER_COORD",
          "role": "ANALISTA",
          "region": "SP",
          "active": true,
          "interface": {
            "punch_clock_active": true,
            "journey_type": "flex",
            "begin_journey": { "monday": "08:00:00", "tuesday": "08:00:00" },
            "journey_time": { "monday": 540, "tuesday": 540 }
          }
        }
      ],
      "managers": [
        {
          "email": "maria.gestora@empresa.com",
          "name": "Maria Gestora",
          "department": "GER",
          "department_path": "DIR_GER",
          "role": "GERENTE",
          "region": "SP",
          "active": true,
          "profile": "approver2"
        }
      ],
      "departments": [
        { "code": "DIR", "name": "Diretoria", "department_level": 1 },
        { "code": "GER", "name": "Gerência", "department_level": 2 },
        { "code": "COORD", "name": "Coordenação", "department_level": 3 }
      ],
      "regions": [
        { "code": "SP", "name": "São Paulo" }
      ],
      "roles": [
        { "code": "ANALISTA", "name": "Analista" },
        { "code": "GERENTE", "name": "Gerente" }
      ]
    }
  }'

Response

Sucesso 200
{
  "err": false,
  "message": "Atualização concluída com sucesso!"
}

Erros

StatusCausa
400Campo key ausente ou inválido.
422Campo data ausente ou sem a lista employees.
500Erro interno ao processar os dados.