Obtenir el full horari mensual d'un empleat
Retorna el full horari mensual en viu d'un empleat per al període obert (en curs): minuts esperats vs treballats, el saldo i les hores extra per dia, i els totals mensuals. employee_id (UUID v7) és obligatori; month (YYYY-MM) pren per defecte el mes actual. El full es recomputa en cada petició des del registre inalterable, així que un fitxatge acabat de registrar es reflecteix sense tancar el mes. Els minuts esperats descompten festius i absències aprovades. Els totals estan en minuts. Un recurs computat: exposa employee_id, mai un id.
A: header
Paràmetres de consulta
ID de l'empleat (UUID v7) de qui es consulta el full mensual.
uuidMes del full en format AAAA-MM; per defecte, el mes actual.
^\d{4}-(0[1-9]|1[0-2])$Paràmetres de capçalera
Fixa la versió de l'API (YYYY-MM-DD, versionat per data estil Stripe) per a aquesta petició; omet-lo per usar la versió fixada de la clau, o l'última si no n'hi ha cap. Versió no suportada → 400 unsupported_api_version; mal formada → 400 parameter_invalid_format. La versió efectiva es reflecteix a la capçalera de resposta Factuarea-Version. Consulta la guia de Versioning.
dateOpera en nom d'una empresa filla (API key mestra de gestoria): passa el seu id públic (UUID v7) i la petició s'executa contra les dades d'aquella filla sense canviar l'scope, el tier ni l'environment de la clau (omet-lo per usar la pròpia empresa de la clau). UUID no vàlid → 400 parameter_invalid_uuid; id desconegut o no propi → 404 profile_not_found. Consulta la guia d'Acting on behalf.
uuidCos de la resposta
application/json
application/json
application/json
application/json
application/json
application/json
application/json
import { Factuarea } from "@factuarea/sdk";const factuarea = new Factuarea({ apiKey: process.env.FACTUAREA_API_KEY! });const result = await factuarea.timeBalances.monthlySheet();{
"data": {
"object": "time_sheet",
"employee_id": "01933a1f-8c21-7b3d-9e4f-1a2b3c4d5e01",
"month": "2026-05",
"total_expected_minutes": 9600,
"total_worked_minutes": 9720,
"total_balance_minutes": 120,
"total_overtime_minutes": 90,
"days": [
{
"date": "2026-05-04",
"expected_minutes": 480,
"worked_minutes": 510,
"balance_minutes": 30,
"overtime_minutes": 15,
"is_holiday": false,
"is_approved_absence": false,
"is_rest_day": false
}
]
}
}{
"error": {
"type": "authentication_error",
"code": "missing_api_key",
"message": "No se ha proporcionado una API key válida en el header Authorization.",
"param": null,
"doc_url": "https://docs.factuarea.com/guides/errors#missing_api_key",
"request_id": "req_01HKQS5N8VR7QXJ9K3T6BWPMZA"
}
}{
"error": {
"type": "authorization_error",
"code": "insufficient_scope",
"message": "Esta API key no tiene el scope requerido para esta operación.",
"param": null,
"doc_url": "https://docs.factuarea.com/guides/errors#insufficient_scope",
"request_id": "req_01HKQS5NBC3P8M1KX4V7SLNHQD"
}
}{
"message": "string"
}{
"error": {
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "El campo `name` es obligatorio y no puede estar vacío.",
"param": "name",
"doc_url": "https://docs.factuarea.com/guides/errors#parameter_invalid",
"request_id": "req_01HKQS5NGS8Z3T6Q1D2E7FYVSI"
}
}{
"error": {
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Has excedido el rate limit de 60 peticiones por minuto. Reintenta tras 30 segundos.",
"param": null,
"doc_url": "https://docs.factuarea.com/guides/errors#rate_limit_exceeded",
"request_id": "req_01HKQS5NKW1C6W9T4G5H0JBZVL"
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "Ha ocurrido un error inesperado. Si persiste, contacta con soporte adjuntando el request_id.",
"param": null,
"doc_url": "https://docs.factuarea.com/guides/errors#internal_error",
"request_id": "req_01HKQS5NLX2D7X0U5H6J1KCAWM"
}
}