GET
changes:read/api/public/v1/product-changesParámetros
cursorCursor desde el que continuar.
pageSizeNúmero máximo de cambios.
Respuesta
200Página de cambios.
PublicProductChange
Cambio de producto
Evento ordenado del flujo incremental de catálogo.
PropiedadTipoDescripción
eventIdobligatoriointeger<int64>Identificador del evento.sequenceobligatoriointeger<int64>Posición ordenada del cambio.resourceTypeobligatoriostringTipo de recurso afectado.operationobligatoriostringcreated, updated, activated, deactivated o deleted.resourceIdobligatoriouuidIdentificador interno del recurso.changedAtobligatoriodate-timeFecha del cambio.originobligatoriostringOrigen del cambio.originApiClientIduuid | nullCliente API que originó el cambio.concurrencyTokenstring | nullToken actual del recurso.tombstoneobligatoriobooleanIndica que el recurso fue eliminado.Ejemplo JSON
{
"eventId": 1042,
"sequence": 1042,
"resourceType": "product",
"operation": "updated",
"resourceId": "14cc9848-f0c0-4457-9fd1-2b60dd46d6f3",
"changedAt": "2026-10-10T12:00:00",
"origin": "public-api",
"originApiClientId": "9db077ca-a3d6-4de9-b521-59be377315db",
"concurrencyToken": "ct_product_example",
"tombstone": false
}Ejemplo de respuesta
{
"items": [
{
"eventId": 1042,
"sequence": 1042,
"resourceType": "product",
"operation": "updated",
"resourceId": "14cc9848-f0c0-4457-9fd1-2b60dd46d6f3",
"changedAt": "2026-10-10T12:00:00",
"origin": "public-api",
"originApiClientId": "9db077ca-a3d6-4de9-b521-59be377315db",
"concurrencyToken": "ct_product_example",
"tombstone": false
}
],
"nextCursor": "eyJzZXF1ZW5jZSI6MTA0Mn0",
"hasMore": false
}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.
PropiedadTipoDescripción
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."
]
}
}