Esta página cubre los dos únicos endpoints con superficie propia sobre variantes y media de un producto: la lectura/actualización de una variante existente y la subida de imágenes vía URL prefirmada. También documenta, explícitamente, qué queda fuera de esta superficie — porque es más de lo que asumirías.
{ "code": "not-found", "message": "Product CAM-ROJO-M not found" }
Permiso requerido:products:read
Este endpoint ya se documenta con su ejemplo de respuesta completo en Consultar un producto — devuelve {sku, variants[], options[], hasVariants, hasOptions}.
{ "code": "not-found", "message": "Product 'CAM-ROJO-M' or variant 'CAM-ROJO-M-CH' not found" }
Permiso requerido:products:update
El cuerpo del request es un objeto plano { [campo]: valor } con cualquier campo válido de variante (price, title, position, taxable, shipping, minAlertStock, sellIfOutOfStock, countryOfOrigin, etc.).
A nivel producto, compareAtPrice debe ser mayor que price o el guardado falla. Esa misma regla no se aplica al compareAtPrice de una variante individual — puedes guardar una variante con un compareAtPrice menor o igual a su price sin que el request falle.
No existe crear/borrar variante — solo actualizar una existente
Este endpoint actualiza campos de una variante que ya existe. No hay un POST para crear una variante nueva ni un DELETE para eliminar una. La estructura completa del arreglo variants[] (agregar, quitar, reordenar variantes) se gestiona reenviando el arreglo completo dentro del payload de PUT /products/{id}.
{ "code": "bad-request/invalid-content-type", "message": "Content type \"application/pdf\" is not allowed. Allowed: JPEG, PNG, GIF, WEBP, MP4, WebM, MOV", "parameter": "contentType"}
Permiso requerido:products:update
Este endpoint no sube el archivo — devuelve una URL prefirmada de S3 (uploadUrl) a la que subes el binario directamente vía PUT desde tu cliente, y una publicUrl que es la que vas a persistir en el media[] del producto.
# 1. Solicita la URL prefirmadacurl -X POST https://api.fenicia.io/products/media/upload \ -H "Authorization: Bearer fkapi_tu_api_key" \ -H "Content-Type: application/json" \ -d '{ "contentType": "image/jpeg", "filename": "cam-rojo-m-1.jpg" }'# 2. Sube el binario directamente a la uploadUrl devueltacurl -X PUT "https://fenicia-media-uploads.s3.amazonaws.com/..." \ -H "Content-Type: image/jpeg" \ --data-binary @cam-rojo-m-1.jpg
Después de subir el binario, agrega la entrada al arreglo media[] del producto con publicUrl como src, vía PUT /products/{id}:
No hay una ruta dedicada para eliminar una imagen o cambiar su orden. El código fuente del lambda tiene comentarios TODO explícitos confirmando que soportar eso está pendiente. Para borrar, reordenar, o modificar cualquier entrada de media[], reenvía el arreglo media[] completo (con la entrada quitada, reordenada o modificada) dentro del payload de PUT /products/{id}.
Varias partes del modelo de producto no tienen endpoint propio de lectura/escritura granular — se gestionan exclusivamente enviando el producto completo (o el subconjunto de campos relevante) a PUT /products/{id}. Esto está confirmado por comentarios TODO explícitos en el código fuente del lambda, no es una omisión de esta documentación:
Área
Cómo se lee
Cómo se escribe
Atributos / custom fields (attributes[])
Como parte del producto completo
Reenviando attributes[] completo vía PUT /products/{id}
Reenviando seo vía PUT /products/{id} — no existe /products/{sku}/seo
Price schemas (priceSchemas[], precios por segmento/canal)
Como parte del producto completo
Reenviando priceSchemas[] completo vía PUT /products/{id}
Media — crear, borrar, reordenar
Como parte del producto completo
Reenviando media[] completo vía PUT /products/{id} (subir el binario sí tiene endpoint propio, ver arriba)
bundleConfig sigue el mismo patrón
No existe una entidad "bundle" con endpoints propios en la API pública. bundleConfig (los componentes de un producto tipo bundle) es un sub-shape más del Product, gestionado también dentro del payload completo de PUT /products/{id} — no hay una ruta como /products/{sku}/bundle. El único mecanismo de composición producto-de-productos con endpoints propios es BOM (bill of materials), orientado a manufactura/consumo, no a "kits de venta".