Historial de versionesCambiado
Una restauración deja fuera un slug ocupado y conserva las variantes cuando no queda ninguna de la versión
Restaurar una versión
Restaurar una versión ·POST /api/v1/orgs/{orgId}/core/history/{versionId}/restore- Un slug que ahora tiene otro producto ya no rechaza la restauración con
409: el producto conserva su propio slug, se restaura el resto, ynotRestoredlo responde comocatalog.slug_takencon suslug. - Una versión de la que el producto ya no tiene ninguna variante ya no rechaza la restauración con
422: el producto conserva sus opciones y sus variantes, se restaura el resto, ynotRestoredresponde cada variante de la versión comocatalog.variant_deletedcon suvariantId.
Crear un producto
Crear un producto ·POST /api/v1/orgs/{orgId}/catalog/products- Sus
warningsya no incluyencatalog.map_below_costnicatalog.msrp_below_cost: un costo por encima del MAP o del MSRP se avisa una vez, comocatalog.cost_above_mapocatalog.cost_above_msrp.
Actualizar un producto
Actualizar un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}- Sus
warningsya no incluyencatalog.map_below_costnicatalog.msrp_below_cost: un costo por encima del MAP o del MSRP se avisa una vez, comocatalog.cost_above_mapocatalog.cost_above_msrp.
Actualizar los precios de un producto
Actualizar los precios de un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}/prices- Sus
warningsya no incluyencatalog.map_below_costnicatalog.msrp_below_cost: un costo por encima del MAP o del MSRP se avisa una vez, comocatalog.cost_above_mapocatalog.cost_above_msrp.
Poner el estado de un producto
Poner el estado de un producto ·PUT /api/v1/orgs/{orgId}/catalog/products/{productId}/status- Sus
warningsya no incluyencatalog.map_below_costnicatalog.msrp_below_cost: un costo por encima del MAP o del MSRP se avisa una vez, comocatalog.cost_above_mapocatalog.cost_above_msrp.
Duplicar un producto
Duplicar un producto ·POST /api/v1/orgs/{orgId}/catalog/products/{productId}/duplicate- Copia un producto como un nuevo borrador con su título seguido de (Copy), luego (Copy 2) y así sucesivamente, con su descripción, sus opciones y sus variantes con sus precios, costos, medidas y ajustes de inventario, y responde
201con la copia. - Las variantes de la copia no tienen identificadores: ni SKU, GTIN, ISBN, número de parte ni código propio.
- Necesita el permiso de duplicar productos, y respeta un
Idempotency-Key.
Listar las versiones de un registro
Listar las versiones de un registro ·GET /api/v1/orgs/{orgId}/core/history- Lista las versiones de un producto con
type=catalog.producty el id del producto: una cuando se crea, y una por cada guardado de su contenido, sus precios o su estado que cambia algo, guardadas 30 días y hasta 200.
Restaurar una versión
Restaurar una versión ·POST /api/v1/orgs/{orgId}/core/history/{versionId}/restore- Restaura un producto a una de sus versiones, con el
expectedVersionen que se leyó, como un solo guardado de su contenido, sus precios, su estado, sus códigos, sus medidas, sus datos de aduana y su seguimiento de stock; su stock disponible y el de su proveedor se quedan como están. - Restaurar otros precios necesita también el permiso de editar precios, otro estado el de poner el estado de un producto, y quitar una variante añadida desde entonces el de eliminar variantes.
- Responde en
notRestoredlo que deja fuera: una variante eliminada desde entonces, comocatalog.variant_deletedcon suvariantId, y un SKU, GTIN o ISBN que ahora tiene otro producto, comocatalog.identifier_takencon sutypey suvalue.
Eliminar un producto
Eliminar un producto ·DELETE /api/v1/orgs/{orgId}/catalog/products/{productId}- Elimina un producto para siempre con todas sus variantes y responde
204; sus publicaciones en cada tienda se liberan, y no se puede deshacer. - Necesita el permiso de eliminar productos.
Poner el estado de un producto
Poner el estado de un producto ·PUT /api/v1/orgs/{orgId}/catalog/products/{productId}/status- Pone un producto en
draft,active,unlistedoarchived, desde cualquier otro, con elexpectedVersionen que se leyó; un producto guardado desde entonces respondecore.version_conflict, y el estado que ya tiene no cambia nada. - Necesita el permiso de poner el estado de un producto, aparte del de editar productos.
Crear un producto
Crear un producto ·POST /api/v1/orgs/{orgId}/catalog/products- Recibe el
descriptionHtmldel producto, su descripción en HTML. Conserva párrafos, encabezados, listas y listas de tareas, citas, bloques de código, imágenes, tablas, líneas horizontales, saltos de línea, enlaces, estilos de texto, color, resaltado, alineación y videos de YouTube, Vimeo o directos; todo lo demás, como un script, un atributo de evento o el marco de otro sitio, se quita y se conserva su texto, y una descripción que queda vacía se guarda como ninguna.
Actualizar un producto
Actualizar un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}- Recibe el mismo
descriptionHtml, que se conserva si no se envía y se borra connull.
Obtener un producto
Obtener un producto ·GET /api/v1/orgs/{orgId}/catalog/products/{productId}- Trae el
descriptionHtmldel producto tal como se guardó,nullsi no tiene.
Actualizar los precios de un producto
Actualizar los precios de un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}/prices- La respuesta trae el
descriptionHtmldel producto, como lo lee obtener un producto.
ProductosCambiado
Pon los pesos, las medidas, los datos de aduana y el control de stock de una variante
Crear un producto
Crear un producto ·POST /api/v1/orgs/{orgId}/catalog/products- Cada variante recibe su
productWeight,productLength,productWidth,productHeight,shippingWeight,shippingLength,shippingWidthyshippingHeight, cada uno unvaluecon suunit(g,kg,oz,lboctpara un peso,mm,cm,inoydpara una medida); unvaluede 0 se guarda como ninguno, y uno demasiado pequeño o demasiado grande para guardarse responde422 catalog.measure_out_of_range. - Cada variante recibe su
countryOfOrigin, un código de dos letras en mayúsculas o minúsculas comomx, guardado comoMX(422 catalog.country_invalidsi no), y suhsCode, que se guarda solo con sus dígitos, comoHS 8544.49.30-80guardado como8544493080, y debe tener de 6 a 13 dígitos del 0 al 9 (422 catalog.hs_code_invalidsi no). - Cada variante recibe
trackInventoryy, cuando se controla su stock, sufallbackStock, 0 si no se envía; unfallbackStockpara una variante sin control de stock responde422 catalog.stock_untracked.
Actualizar un producto
Actualizar un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}- Cada variante recibe los mismos campos, cada uno conservado si no se envía y quitado con
null, salvotrackInventory, con los mismos cuatro códigos nuevos; una variante que deja de controlar su stock no tiene ninguno de sus tres stocks.
Obtener un producto
Obtener un producto ·GET /api/v1/orgs/{orgId}/catalog/products/{productId}- Cada variante trae sus ocho medidas en la unidad en que se dio cada una,
nulldonde no tiene, sucountryOfOrigin, suhsCode, sutrackInventoryy suonHandStock,supplierStockyfallbackStock.
Actualizar los precios de un producto
Actualizar los precios de un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}/prices- Cada variante de la respuesta trae sus ocho medidas, su
countryOfOrigin, suhsCode, sutrackInventoryy sus tres stocks, como los lee obtener un producto.
Actualizar los precios de un producto
Actualizar los precios de un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}/prices- Cambia
price,compareAt,map,msrp,onHandCost,supplierCostyfallbackCostde las variantes que nombra por suid, cada uno un texto decimal en la moneda de la variante como"19.99",nullpara quitarlo; una variante que no se nombra conserva su dinero. Necesita el permiso de editar precios, aparte del de cambiar el contenido de un producto, y laexpectedVersionen que se leyó el producto. - Rechaza un precio de comparación por debajo del precio (
422 catalog.compare_below_price), un precio por debajo del costo, el costo en existencia o si no el del proveedor (422 catalog.price_below_cost), y un MAP por encima del MSRP (422 catalog.map_above_msrp), cada uno solo cuando la actualización cambia uno de sus precios. Responde422 catalog.price_invalidpor un monto que no es un número o tiene más decimales que su moneda, y422 catalog.price_out_of_rangepor uno por debajo de 0 o demasiado grande. - Responde
ProductSaved, cuyoswarningsnombran cada otra regla de precios que la actualización deja rota, comocatalog.price_below_map, y un precio por debajo de un costo que la actualización subió (catalog.price_below_cost).
Crear un producto
Crear un producto ·POST /api/v1/orgs/{orgId}/catalog/products- Cada variante recibe los mismos siete montos, que necesitan el permiso de editar precios (
403 core.forbiddensin él), y se revisan todas las reglas de precios: cinco códigos nuevos, y los avisos de precios.
Actualizar un producto
Actualizar un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}- Cada variante de la respuesta trae su
currencyy sus siete montos como textos decimales en ella,nulldonde no tiene.
Obtener un producto
Obtener un producto ·GET /api/v1/orgs/{orgId}/catalog/products/{productId}- Cada variante trae su
currencyy sus siete montos como textos decimales en ella,nulldonde no tiene.
Obtener un SKU libre
Obtener un SKU libre ·GET /api/v1/orgs/{orgId}/catalog/products/free-sku- Responde
{ sku }, un SKU que ninguna variante de la organización tiene, tres letras, tres dígitos y tres letras comoKMT-472-BXR, sin las letras I, L y O ni los dígitos 0 y 1. No queda reservado: dáselo a una variante al crear o actualizar un producto, que responde409 catalog.identifier_takensi otra variante lo tomó antes.
Crear un producto
Crear un producto ·POST /api/v1/orgs/{orgId}/catalog/products- Cada variante recibe
identifiers, una lista en orden de{ type, value }, contypeuno desku,gtin,isbn,mpn(el número de pieza) ocustom, y unalabelsolo para un código propio. Los espacios se recortan y se juntan; un GTIN o un ISBN se guarda sin espacios ni guiones, con su dígito de control verificado. - Responde
ProductSaved: el producto ywarnings, una lista de{ code, params }.catalog.part_number_similaravisa cuando otro producto tiene un número de pieza que se distingue solo en la puntuación, como guiones o espacios, y nunca detiene el guardado. - Responde
422 catalog.identifier_invalidcon la variante, el lugar del código, su tipo y la razón;422 catalog.identifier_repeatedpor un segundo SKU de una variante, un código repetido o una etiqueta propia repetida; y409 catalog.identifier_takencuando otra variante de la organización tiene el SKU, el GTIN o el ISBN: tres códigos nuevos.
Actualizar un producto
Actualizar un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}- Cada variante de
variantsrecibeidentifiers, que reemplazan todos sus códigos ([]los elimina todos); la variante que no los envía conserva los suyos. Un código que pasa de una variante a otra en la misma actualización se acepta. - Responde
ProductSaved, con los mismoswarnings, y los mismos tres códigos nuevos que al crear un producto.
Obtener un producto
Obtener un producto ·GET /api/v1/orgs/{orgId}/catalog/products/{productId}- Cada variante tiene
identifiers, cada uno con sutype, suvalueguardado y sulabel(nullsalvo en un código propio), en su orden.
ProductosCambiado
Agrega, renombra y elimina las opciones y las variantes de un producto al actualizarlo
Actualizar un producto
Actualizar un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}- Recibe
optionsyvariants, cada una la lista completa: envía las que conservas con suid, las nuevas sin él, y deja fuera las que quieras eliminar. Si envíasoptionsy novariants, la variante que tenga un valor que eliminaste se va con él. - Eliminar una variante también necesita el permiso de borrar variantes,
catalog.product.delete_variant: sin él la actualización responde403 core.forbidden. - Responde
422 catalog.option_unknowny422 catalog.variant_unknown, dos códigos nuevos, cuando unidno es del producto, los mismos códigos422que al crear un producto cuando las opciones y las variantes no cumplen sus reglas, y403 core.usage_limit_reachedcuando las variantes nuevas pasan el límite de tu plan.
Actualizar un producto
Actualizar un producto ·PATCH /api/v1/orgs/{orgId}/catalog/products/{productId}- Cambia el título, el slug, la condición, el tipo de producto, el meta título o la meta descripción de un producto: un campo que no se envía queda como está, y
nullborra el tipo de producto, el meta título o la meta descripción. - Recibe el
expectedVersionen que se leyó el producto, y responde el producto con su nuevaversion. - Responde
409 core.version_conflict, un código nuevo, cuando el producto se guardó después de que lo leíste, y409 catalog.slug_takencuando otro producto ya usa el slug.
Listar productos
Listar productos ·GET /api/v1/orgs/{orgId}/catalog/products- Lista los productos de la organización página por página, del cambiado más recientemente al más antiguo o por título, con el título, el slug, el estado y el número de variantes de cada uno.
- Busca en el título y filtra por estado.
Obtener un producto
Obtener un producto ·GET /api/v1/orgs/{orgId}/catalog/products/{productId}- Lee un producto con sus opciones, sus valores y sus variantes.
Crear un producto
Crear un producto ·POST /api/v1/orgs/{orgId}/catalog/products- Crea un producto con sus opciones y sus variantes, cada variante una combinación de los valores de las opciones.
- Rechaza un producto sin variantes, con una opción, un valor o una combinación repetidos, o con más de 10 opciones, 250 valores en una opción o 2000 variantes, cada caso con su propio código
422. - Responde
409 catalog.slug_takencuando otro producto ya usa el slug, y403 core.usage_limit_reachedcuando las variantes pasarían la cuota gratuita de la organización.
La respuesta de error de cada operación ahora también lista
403 core.module_not_enabled, cuando la
organización no activó el módulo al que pertenece la operación, y 403 core.module_read_only,
cuando ese módulo está en solo lectura para la organización, con params.module que lo nombra.
Estas operaciones ya podían responder ambos códigos.Los dos códigos se suman a la respuesta de error de:- Obtener la credencial que llama ·
GET /api/v1/credential - Obtener la organización ·
GET /api/v1/orgs/{orgId}/core/org - Actualizar la organización ·
PATCH /api/v1/orgs/{orgId}/core/org - Obtener el resumen de facturación ·
GET /api/v1/orgs/{orgId}/core/billing - Obtener el uso del mes ·
GET /api/v1/orgs/{orgId}/core/billing/usage - Listar los tipos de registro ·
GET /api/v1/orgs/{orgId}/core/dataio/adapters - Obtener un tipo de registro ·
GET /api/v1/orgs/{orgId}/core/dataio/adapters/{entity} - Listar importaciones ·
GET /api/v1/orgs/{orgId}/core/imports - Completar una carga ·
POST /api/v1/orgs/{orgId}/core/imports/uploads/{fileId}/complete - Generar los resultados de una importación ·
POST /api/v1/orgs/{orgId}/core/imports/{jobId}/results - Obtener el estado de un archivo ·
GET /api/v1/orgs/{orgId}/core/files/{fileId} - Listar exportaciones ·
GET /api/v1/orgs/{orgId}/core/exports - Cambiar el nombre de una exportación ·
PATCH /api/v1/orgs/{orgId}/core/exports/{jobId} - Listar plantillas de exportación ·
GET /api/v1/orgs/{orgId}/core/exports/templates - Crear una plantilla de exportación ·
POST /api/v1/orgs/{orgId}/core/exports/templates - Actualizar una plantilla de exportación ·
PATCH /api/v1/orgs/{orgId}/core/exports/templates/{templateId} - Eliminar una plantilla de exportación ·
DELETE /api/v1/orgs/{orgId}/core/exports/templates/{templateId} - Obtener un trabajo ·
GET /api/v1/orgs/{orgId}/core/jobs/{jobId} - Listar los mensajes de un trabajo ·
GET /api/v1/orgs/{orgId}/core/jobs/{jobId}/messages - Obtener el enlace de un archivo del trabajo ·
GET /api/v1/orgs/{orgId}/core/jobs/{jobId}/files/{file} - Cancelar un trabajo ·
POST /api/v1/orgs/{orgId}/core/jobs/{jobId}/cancel - Buscar registros ·
GET /api/v1/orgs/{orgId}/core/search - Listar las versiones de un registro ·
GET /api/v1/orgs/{orgId}/core/history - Comparar una versión ·
GET /api/v1/orgs/{orgId}/core/history/{versionId} - Restaurar una versión ·
POST /api/v1/orgs/{orgId}/core/history/{versionId}/restore - Listar incidencias ·
GET /api/v1/orgs/{orgId}/core/incidents - Marcar una incidencia como leída o no leída ·
PUT /api/v1/orgs/{orgId}/core/incidents/{incidentId}/read - Resolver una incidencia ·
POST /api/v1/orgs/{orgId}/core/incidents/{incidentId}/resolve - Listar notificaciones ·
GET /api/v1/orgs/{orgId}/core/notifications - Marcar una notificación como leída o no leída ·
PUT /api/v1/orgs/{orgId}/core/notifications/{notificationId}/read - Marcar todo como leído ·
POST /api/v1/orgs/{orgId}/core/notifications/read - Listar vistas guardadas ·
GET /api/v1/orgs/{orgId}/core/views - Crear una vista guardada ·
POST /api/v1/orgs/{orgId}/core/views - Fijar la vista predeterminada de una tabla ·
PUT /api/v1/orgs/{orgId}/core/views/default - Actualizar una vista guardada ·
PATCH /api/v1/orgs/{orgId}/core/views/{viewId} - Eliminar una vista guardada ·
DELETE /api/v1/orgs/{orgId}/core/views/{viewId} - Listar conexiones de tienda ·
GET /api/v1/orgs/{orgId}/integrations/connections - Conectar una tienda ·
POST /api/v1/orgs/{orgId}/integrations/connections - Reconectar una tienda ·
PUT /api/v1/orgs/{orgId}/integrations/connections/{connectionId}/credentials - Desconectar una tienda ·
DELETE /api/v1/orgs/{orgId}/integrations/connections/{connectionId}
core.module_read_only se suma a la respuesta de error de esta operación, que ya listaba
core.module_not_enabled:- Iniciar una exportación ·
POST /api/v1/orgs/{orgId}/core/exports
El sitio para desarrolladores se abre con la referencia de la
API y este registro de cambios, en inglés y en español. Todas las
operaciones están en beta hasta el lanzamiento, así que aún pueden cambiar: cada cambio se lista
aquí, con las operaciones que toca.