PATCH
/api/mod/productos/{espacio}/products/{producto}Edita un producto
Cambia solo los campos que mandas. Es también como se activa o se archiva: {"estado": "activo"}.
- PERMISOescribe
- CRÉDITOSno gasta
- AUTENTICACIÓNBearer bth_…
PARÁMETROS
| CAMPO | TIPO | REQUERIDO | QUÉ ES |
|---|---|---|---|
| espacio | string | SÍ | El id del espacio (sale en GET /api/companies). Tiene que tener el módulo Productos. |
| producto | string | SÍ | El id del producto: el que devolvió crearlo (32 caracteres hexadecimales). |
CUERPO · JSON
| CAMPO | TIPO | REQUERIDO | QUÉ ES |
|---|---|---|---|
| estado | "borrador" | "activo" | "archivado" | no | Ver estados. |
| nombre | string | no | El nombre nuevo. |
| descripcion | string | no | La ficha nueva. |
| product_type_id | string | no | Otro tipo. Los atributos se vuelven a validar contra él. |
| atributos · metadata | object | no | Reemplazan el objeto entero: manda también los valores que no cambian. |
| imagenes | string[] | no | Reemplaza la lista entera. |
RESPUESTA 200
El producto, ya cambiado.
| CAMPO | TIPO | QUÉ ES |
|---|---|---|
| id · nombre | string | El id y el nombre. |
| product_type_id | string | null | Su tipo de producto, si tiene. |
| descripcion | string | null | La ficha en texto libre. |
| estado | "borrador" | "activo" | "archivado" | Ver estados. |
| atributos · metadata | object | Los valores de sus atributos y tus datos libres. |
| imagenes | string[] | Las URL de sus imágenes. |
| opciones[] | { id, nombre, valores } | Sus ejes de variación: "Talla" con ["S", "M", "L"]. Vacío si no tiene. |
| variantes[] | object | Las unidades vendibles, la más antigua primero, con id, product_id, sku, option_values, barcode, activo, external_id y created_at. |
| created_at · updated_at | number | Segundos desde 1970, con decimales. |
ERRORES DE ESTA RUTA · SIEMPRE {"detail": …}
| STATUS | CUÁNDO | DETAIL LITERAL |
|---|---|---|
| 403 | El espacio no tiene el módulo Productos | módulo no habilitado para este espacio. |
| 403 | La clave es de solo lectura | Tu cuenta es de solo lectura en este espacio. |
| 404 | No hay un producto con ese id en el espacio | producto no encontrado. |
| 400 | product_type_id no es un tipo del espacio | tipo de producto no encontrado: … |
| 400 | Un atributo no cumple su tipo de producto: falta uno requerido, no es un número, no es un sí/no o no está entre sus opciones | atributo requerido ausente: '…' |
| 422 | estado no es borrador, activo ni archivado (detail es una lista) | — |
Y los de cualquier ruta —clave inválida, cuenta no al día, IP, límites—, en Errores, límites y créditos.
CONVIENE SABER
- Un campo en
nullse ignora: no borra el valor que había. - Las opciones y las variantes no se cambian aquí: las variantes tienen su ruta propia.