/api/public/v1/daily-reportsParámetros
limitNúmero máximo de elementos por página. Por defecto 50, máximo 200.
cursorCursor opaco para continuar desde la respuesta anterior.
modifiedSinceIncluye registros creados o modificados después de esta fecha, interpretada en el timezone del tenant.
sortOrdenación.
date-datenumber-numbercreatedAt-createdAtmodifiedAt-modifiedAtfromFecha inicial.
toFecha final.
projectIdProyecto.
clientIdCliente.
employeeIdEmployeeId GUID.
purchaseIdCompra.
workTypeTipo de trabajo.
byMeasurementbyAdministrationstateEstado.
pendingvalidatedrejectednumberingLineIdSerie.
numberNúmero exacto.
operatingCostGasto de explotación.
hourTypeIdsIdentificadores de tipos de hora.
Respuesta
PublicDailyReport
Parte de trabajo
Ficha completa con campos personalizados e historial. costPerHour y totalCost solo aparecen con daily-reports:costs:read o all:read.
idobligatoriouuidIdentificador del parte.numberstring | nullNúmero aplicado.dateobligatoriodate-time localFecha del parte.employeeIdobligatoriouuidGUID público del empleado.projectIdobligatoriouuidProyecto.timeInHoursobligatorionumberHoras.hourTypeIduuid | nullIdentificador del tipo de hora. Puede ser nulo en partes heredados.hourTypeSystemIdinteger | nullIdentificador opcional de un tipo predeterminado.workTypeobligatoriobyMeasurement | byAdministrationTipo de trabajo.stateobligatoriopending | validated | rejectedEstado actual.customFieldsobligatoriocustom field[]Valores personalizados.historyobligatoriohistory item[]Historial cronológico de estados.costPerHournumberCoste protegido por scope.totalCostnumberCoste total protegido por scope.createdAtobligatoriodate-timeCreación.modifiedAtobligatoriodate-timeÚltima modificación.Ejemplo JSON
{
"id": "29061c20-371c-4471-8648-c7332d57ed45",
"number": "PT-2026-0042",
"date": "2026-10-16T08:00:00",
"employeeId": "a5fc8a9c-66da-429d-9bed-5280a4185348",
"projectId": "0d3fa80a-d8aa-4a95-84b7-8f6a157005ea",
"timeInHours": 8,
"hourTypeId": "d886784c-c76f-4c76-9726-cf2f842c8c17",
"hourTypeSystemId": 1,
"workType": "byAdministration",
"state": "pending",
"customFields": [],
"history": [
{
"createdAt": "2026-10-10T12:00:00",
"state": "pending"
}
],
"createdAt": "2026-10-10T12:00:00",
"modifiedAt": "2026-10-10T12:00:00"
}Ejemplo de respuesta
{
"items": [
{
"id": "29061c20-371c-4471-8648-c7332d57ed45",
"number": "PT-2026-0042",
"date": "2026-10-16T08:00:00",
"employeeId": "a5fc8a9c-66da-429d-9bed-5280a4185348",
"projectId": "0d3fa80a-d8aa-4a95-84b7-8f6a157005ea",
"timeInHours": 8,
"hourTypeId": "d886784c-c76f-4c76-9726-cf2f842c8c17",
"hourTypeSystemId": 1,
"workType": "byAdministration",
"state": "pending",
"customFields": [],
"history": [
{
"createdAt": "2026-10-10T12:00:00",
"state": "pending"
}
],
"createdAt": "2026-10-10T12:00:00",
"modifiedAt": "2026-10-10T12:00:00"
}
],
"nextCursor": "eyJ2ZXJzaW9uIjoxLCJvZmZzZXQiOjUwfQ",
"hasMore": true
}Errores
400Solicitud incorrectaapplication/json401Autenticación inválida o no proporcionadaapplication/json403Permisos insuficientesapplication/json404Recurso no encontradoapplication/json409Conflicto con el estado actualapplication/json410Recurso ya no disponibleapplication/json422Error de validaciónapplication/json429Límite de solicitudes excedidoapplication/jsonVer modelo de error
PublicApiError
Error de API
Formato estable de los errores públicos.
statusobligatoriointegerCódigo HTTP.codeobligatoriostringCódigo estable para tratamiento automático.messageobligatoriostringMensaje legible.correlationIdobligatoriostringIdentificador para soporte y trazabilidad.currentConcurrencyTokenstring | nullToken actual cuando existe un conflicto.validationErrorsobject<string,string[]>Errores agrupados por campo.Ejemplo JSON
{
"status": 422,
"code": "validation_error",
"message": "The request is invalid.",
"correlationId": "01J9EXAMPLE",
"validationErrors": {
"unitCode": [
"The unit does not exist."
]
}
}