Volver a Documentación
API de Ingesta Masiva
Carga grandes volúmenes de datos de forma eficiente usando el endpoint de ingesta masiva.
Visión General
El endpoint de ingesta masiva permite cargar múltiples productos, usuarios e interacciones en una sola operación, optimizando el rendimiento para grandes volúmenes de datos.
Hasta 1000 elementos por tipo
Procesamiento asíncrono
Operación atómica
Endpoint Principal
POST
/ingestion/batch
Carga múltiples tipos de datos en una sola operación.
Estructura del Request
{
"products": [
{
"externalId": "prod_001",
"name": "Producto 1",
"description": "Descripción del producto",
"price": 99.99,
"category": "electronics",
"brand": "Apple",
"inStock": true,
"attributes": {
"color": "black",
"storage": "128GB"
}
}
],
"users": [
{
"externalId": "user_001",
"preferredCategories": ["electronics"],
"priceRangeMin": 50,
"priceRangeMax": 1000,
"attributes": {
"age": 28,
"location": "Madrid"
}
}
],
"interactions": [
{
"external_user_id": "user_001",
"external_product_id": "prod_001",
"interaction_type": "purchase",
"value": 1.0,
"timestamp": "2024-01-15T10:30:00Z"
}
]
}Ejemplo de Request
curl -X POST "https://rayuela-backend-e7apihrdoa-uc.a.run.app/api/v1/ingestion/batch" \
-H "X-API-Key: sk_prod_tu_api_key" \
-H "Content-Type: application/json" \
-d '{
"products": [
{
"externalId": "smartphone_001",
"name": "iPhone 15 Pro",
"price": 1199.99,
"category": "electronics/smartphones",
"brand": "Apple"
}
],
"interactions": [
{
"external_user_id": "user_123",
"external_product_id": "smartphone_001",
"interaction_type": "view",
"value": 1.0
}
]
}'Formato de Respuesta
Respuesta Exitosa (200)
{
"message": "Batch ingestion initiated successfully",
"status": "processing",
"jobId": 123,
"taskId": "task_abc123",
"totalUsers": 75,
"totalProducts": 150,
"totalInteractions": 500
}Respuesta con Errores Parciales (207)
{
"message": "Batch ingestion completed with errors",
"status": "completed_with_errors",
"jobId": 124,
"totalUsers": 70,
"totalProducts": 140,
"totalInteractions": 480,
"errors": [
{
"recordType": "product",
"externalId": "prod_invalid",
"errorMessage": "Invalid price: must be greater than 0"
}
]
}Límites y Restricciones
Límites por Request
- • Máximo 1000 productos
- • Máximo 1000 users
- • Máximo 1000 interacciones
- • Tamaño máximo: 10MB
Límites de Rate
- • 10 requests por minuto
- • 100 requests por hora
- • 1000 requests por día
Importante
Para volúmenes mayores a los límites, divide los datos en múltiples requests. La operación es atómica: si falla, ningún dato se procesa.
Reglas de Validación
Productos
- •
externalId: Requerido, único, máximo 255 caracteres - •
name: Requerido, máximo 200 caracteres - •
price: Requerido, debe ser mayor a 0 - •
category: Requerido, máximo 50 caracteres
Usuarios
- •
externalId: Requerido, único, máximo 255 caracteres - •
priceRangeMin / priceRangeMax: Opcional, debe ser mayor o igual a 0
Interacciones
- •
external_user_idyexternal_product_id: Requeridos - •
interaction_type: Debe ser uno de los tipos permitidos por contrato (ej: VIEW, CLICK, PURCHASE, CART, RATING) - •
value: Requerido, debe ser mayor a 0
Códigos de Error
400
Bad Request - Datos inválidos o límites excedidos401
Unauthorized - API Key inválida413
Payload Too Large - Excede 10MB429
Rate Limit Exceeded - Demasiadas requests500
Internal Server Error - Error del servidor