/api/public/v1/snag-pointsParámetros
limitNúmero máximo de elementos por página. Por defecto 50, máximo 200.
cursorCursor opaco para continuar desde la respuesta anterior.
sortOrden de los resultados. Antepón - para orden descendente.
createdAt-createdAtlastStateChangedAt-lastStateChangedAtcode-codetitle-titlestate-statepriority-prioritymodifiedAfterIncluye repasos creados o modificados después de esta fecha, interpretada en el timezone del tenant.
dateFromFecha inicial del repaso.
dateToFecha final del repaso.
projectIdProyecto.
situationIdsUbicaciones del proyecto.
statesEstados.
pendingresolvedrejectedclosedprioritiesPrioridades.
lowmediumhighcodeCódigo exacto dentro del proyecto.
categoryIdCategoría.
responsibleCompanyIdEmpresa responsable.
Respuesta
PublicSnagPoint
Repaso
Ficha pública con contadores; las colecciones se consultan por separado.
idobligatoriouuidIdentificador estable.codeobligatoriointegerCódigo generado en el proyecto.projectIdobligatoriouuidProyecto.titleobligatoriostringTítulo.descriptionstring | nullDescripción.stateobligatoriostringEstado.prioritystring | nullPrioridad.photoCountobligatoriointegerNúmero de fotos.commentCountobligatoriointegerNúmero de comentarios.stateHistoryCountobligatoriointegerNúmero de estados.createdAtobligatoriodate-timeCreación.modifiedAtobligatoriodate-timeÚltimo cambio del repaso o de sus colecciones.Ejemplo JSON
{
"id": "cbefdbb8-acde-49f9-8cc5-390024315c2b",
"code": 42,
"projectId": "0d3fa80a-d8aa-4a95-84b7-8f6a157005ea",
"projectCode": "OBR-2026-0042",
"projectName": "Reforma Gran Vía",
"title": "Humedad en el portal",
"description": "Aparece después de llover",
"state": "pending",
"priority": "high",
"photoCount": 2,
"commentCount": 1,
"stateHistoryCount": 1,
"createdAt": "2026-10-10T12:00:00",
"modifiedAt": "2026-10-10T12:00:00"
}Ejemplo de respuesta
{
"items": [
{
"id": "cbefdbb8-acde-49f9-8cc5-390024315c2b",
"code": 42,
"projectId": "0d3fa80a-d8aa-4a95-84b7-8f6a157005ea",
"projectCode": "OBR-2026-0042",
"projectName": "Reforma Gran Vía",
"title": "Humedad en el portal",
"description": "Aparece después de llover",
"state": "pending",
"priority": "high",
"photoCount": 2,
"commentCount": 1,
"stateHistoryCount": 1,
"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."
]
}
}