Folha de pagamento e assessoria trabalhista
Objetivo: alimentar seu software de folha de pagamento com horas efetivas, ausências e saldos de férias de um período, sem exportar manualmente.
Scopes necessários: org:fichajes:read, org:ausencias:read, org:saldos:read.
Os três recursos-chave:
GET /v1/work-summaries— o recurso da folha: agregados fechados de jornada por funcionário e período.GET /v1/absences— afastamentos, férias e descontos do período.GET /v1/vacation-balances— saldos de férias para o fechamento.
Work summaries: horas do período
work-summaries retorna uma linha por funcionário × período com os agregados já calculados (não eventos de ponto). Filtre por period=day|month e um intervalo from/to (≤ 1 ano).
curl -s "$KINMU_BASE_URL/work-summaries?period=month&from=2026-06-01&to=2026-06-30" \
-H "Authorization: Bearer $KINMU_API_KEY"{
"data": [
{
"employee_id": "a1b2…",
"period_start": "2026-06-01",
"period_end": "2026-06-30",
"worked_minutes": 9600,
"break_minutes": 1200,
"night_minutes": 300,
"overtime_minutes": 240,
"expected_minutes": 9600,
"balance_minutes": 0,
"banked_hours_balance_minutes": 120,
"absences_minutes": 480,
"source_days": 21
}
],
"meta": { "next_cursor": null, "has_more": false }
}Campos relevantes para a folha:
| Campo | Uso |
|---|---|
worked_minutes | Tempo efetivo trabalhado. |
night_minutes | Minutos em horário noturno (adicionais). |
overtime_minutes | Horas extras do período. |
expected_minutes | Jornada prevista em contrato. |
balance_minutes | Diferença trabalhado − previsto. |
banked_hours_balance_minutes | Saldo do banco de horas. |
absences_minutes | Minutos de ausência no período. |
Os agregados mensais podem ser servidos a partir de snapshots consolidados. Se o seu fechamento depende de dados do dia corrente, considere uma possível latência de consolidação e feche sobre períodos já completos.
Ausências do período
Cruze as ausências aprovadas que se sobrepõem ao período da folha para aplicar afastamentos e descontos:
curl -s "$KINMU_BASE_URL/absences?status=approved&from=2026-06-01&to=2026-06-30" \
-H "Authorization: Bearer $KINMU_API_KEY"Cada ausência traz type como { key, label } (a key é estável: vacation, sick_leave ou tipos custom da sua empresa) e days_count. Use sempre a key na sua lógica.
Saldos de férias
Para o fechamento anual ou para provisões, consulte os saldos por funcionário e ano:
curl -s "$KINMU_BASE_URL/vacation-balances?year=2026" \
-H "Authorization: Bearer $KINMU_API_KEY"{
"data": [
{
"employee_id": "a1b2…",
"year": 2026,
"entitled_days": 23,
"used_days": 10,
"pending_days": 2,
"remaining_days": 11,
"carry_over_days": 0,
"carry_over_expires_at": null
}
]
}Fluxo de fechamento mensal
Liste os funcionários ativos do período
GET /v1/employees?status=active (pagine com cursor se tiver mais de 100).
Baixe os work-summaries do mês
GET /v1/work-summaries?period=month&from=…&to=….
Cruze as ausências aprovadas
GET /v1/absences?status=approved&from=…&to=….
(Opcional) Gere o registro legal de jornada
Para a inspeção do trabalho, solicite o relatório time_registry_monthly (RD-ley 8/2019):
curl -s -X POST "$KINMU_BASE_URL/reports" \
-H "Authorization: Bearer $KINMU_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "type": "time_registry_monthly", "format": "csv", "params": { "month": "2026-06" } }'Formatos: csv ou xlsx (xlsx apenas para check_ins_export). Você recebe 202 { "id": "…", "status": "processing" }. Faça polling em GET /v1/reports/{id} até status=completed; a resposta então inclui download_url, uma URL assinada temporária (TTL de 5 min, uso único). A assinatura é a credencial: baixe o arquivo dessa URL sem o header Authorization:
# 1) obtener la download_url (solo aparece cuando status=completed)
DL=$(curl -s "$KINMU_BASE_URL/reports/<id>" \
-H "Authorization: Bearer $KINMU_API_KEY" | jq -r '.download_url')
# 2) descargar el fichero desde la URL firmada (sin Bearer; un solo uso, 5 min)
curl -s -L "$DL" -o registro-horario-2026-06.csvO scope org:informes:read é obrigatório para solicitar o relatório. A download_url é de uso único e expira em 5 minutos: solicite e baixe na hora.