Modificar Inventarios
Permite modificar uno o múltiples registros de inventario existentes en el sistema mediante una única petición. Este endpoint está diseñado para operaciones de actualización en lote (batch update), permitiendo actualizar hasta 10,000 registros por petición.
Método: POST
Endpoint
Sección titulada «Endpoint»https://api.ventasremotas.com/v1/stocks/batch-updateEncabezados de la solicitud
Sección titulada «Encabezados de la solicitud»| Header | Valor | Descripción |
|---|---|---|
Content-Type | application/json | Indica que los datos se envían en formato JSON |
Accept | application/json | Indica que la respuesta debe estar en formato JSON |
Subscription-Key | {subscription_key} | Clave de suscripción para acceder a la API |
Authorization | Bearer {access_token} | Token de acceso obtenido del endpoint /token |
Parámetros del Cuerpo (Body)
Sección titulada «Parámetros del Cuerpo (Body)»El body debe ser un array de objetos, donde cada objeto representa un registro de inventario a actualizar.
Límites
Sección titulada «Límites»| Parámetro | Valor | Descripción |
|---|---|---|
| Mínimo de items | 1 | El array no puede estar vacío |
| Máximo de items | 10,000 | Número máximo de inventarios por petición |
El cuerpo (Body) de la solicitud debe enviarse en formato JSON y debe incluir un array con los siguientes parámetros.
| Campo | Tipo | Nulo | Restricciones | Descripción |
|---|---|---|---|---|
product_code | string (max 20) | No | No permite: espacio, #, %, &, *, {, }, \, :, <, >, ?, /, +, . | Código de producto asignado desde el ERP (identifica al inventario a actualizar) |
location | string (max 20) | No | Código de la bodega donde está localizado el producto (identifica al inventario a actualizar) | |
quantity | decimal (18, 2) | Sí | Existencias del producto en unidades | |
state | string (max 1) | No | Valores permitidos: Y, N | Determina la disponibilidad del inventario: Y disponible, N no disponible |
Formato de tipos de dato
Sección titulada «Formato de tipos de dato»- string (max N): Cadena de texto con longitud máxima de
Ncaracteres. - decimal (p, s): Número decimal donde
pes la precisión total (dígitos enteros + decimales) yses la escala (dígitos decimales).- Ejemplo:
decimal (18, 2)permite hasta 16 dígitos enteros y 2 decimales (ej:9999999999999999.99)
- Ejemplo:
Ejemplo de Solicitud
Sección titulada «Ejemplo de Solicitud»Aquí tienes un ejemplo de cómo debería quedar el cuerpo de la solicitud en formato JSON:
[ { "product_code": "PROD-001", "location": "BOD-PRINCIPAL", "quantity": 200.0, "state": "Y" }, { "product_code": "PROD-002", "location": "BOD-PRINCIPAL", "quantity": null, "state": "N" }]Ejemplo de Respuesta
Sección titulada «Ejemplo de Respuesta»{ "statusCode": 200, "message": "Stocks updated successfully"}{ "statusCode": 400, "errors": [ { "message": "Invalid JSON in request body" } ]}{ "statusCode": 415, "errors": [ { "message": "Content-Type: application/json is required" } ]}Errores globales (estructura del body)
Sección titulada «Errores globales (estructura del body)»Si el body no es un array:
{ "statusCode": 422, "errors": [ { "message": "Request body must be an array" } ]}Si el array está vacío:
{ "statusCode": 422, "errors": [ { "message": "Request body cannot be empty" } ]}Si excede el límite de 10,000 items:
{ "statusCode": 422, "errors": [ { "message": "Array exceeds maximum limit of 10000 items" } ]}Errores por item (validación de campos)
Sección titulada «Errores por item (validación de campos)»Los errores se agrupan por el índice del item en el array:
{ "statusCode": 422, "errors": [ { "index": 0, "errors": [ { "field": "product_code", "message": "Field is required" }, { "field": "quantity", "message": "Field must be of type decimal" } ] }, { "index": 2, "errors": [ { "field": "product_code", "message": "Field exceeds maximum length of 20 characters" } ] } ]}Tipos de Errores de Validación por Campo
Sección titulada «Tipos de Errores de Validación por Campo»Errores de presencia y nulidad:
| Error | Descripción |
|---|---|
Field is required | El campo no fue enviado en el objeto (la clave no existe) |
Field cannot be null or empty | El campo fue enviado con valor null o vacío y no acepta nulos |
Unknown field | Se envió un campo que no existe en la configuración |
Item must be an object | Un elemento del array no es un objeto JSON |
Errores de tipo de dato:
| Error | Descripción |
|---|---|
Field must be a string | El valor no es una cadena de texto |
Field must be of type decimal | El valor no es un número decimal válido |
Field must be a valid decimal (e.g., 1.5, 10.25) | El formato del decimal es inválido |
Field must be a valid decimal number | El valor no es un número decimal válido (NaN, Infinity) |
Errores de longitud y precisión:
| Error | Descripción |
|---|---|
Field exceeds maximum length of X characters | La cadena excede la longitud máxima permitida |
Field exceeds maximum of X integer digits (precision: P, scale: S) | El número excede los dígitos enteros permitidos |
Field exceeds maximum of X decimal places | El número excede los decimales permitidos |
Errores de valores permitidos:
| Error | Descripción |
|---|---|
Value must be one of: Y, N | El valor no está en la lista de valores permitidos (campo state) |
Errores de formato:
| Error | Descripción |
|---|---|
Field contains forbidden characters. The following are not allowed: space, #, %, &, *, {, }, \, :, <, >, ?, /, +, . | El campo product_code contiene caracteres prohibidos |
{ "statusCode": 423, "errors": [ { "message": "Resource is locked and cannot be accessed." } ]}Error de conexión a base de datos
Sección titulada «Error de conexión a base de datos»{ "statusCode": 500, "errors": [ { "message": "Error connecting to database" } ]}Error de operación en base de datos
Sección titulada «Error de operación en base de datos»{ "statusCode": 500, "errors": [ { "message": "Database operation failed" } ]}Error en Redis
Sección titulada «Error en Redis»{ "statusCode": 500, "errors": [ { "message": "Redis operation failed" } ]}Error en validaciones
Sección titulada «Error en validaciones»{ "statusCode": 500, "errors": [ { "message": "Unexpected error in the validations" } ]}Error inesperado
Sección titulada «Error inesperado»{ "statusCode": 500, "errors": [ { "message": "Unexpected error" } ]}Error del Servidor
Estos errores indican problemas internos en el servidor, la base de datos o el servicio de cache. Si persisten, contacta al equipo de soporte.