Productos
Resumen para integración
- URL base:
https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services- Token: de administración, en el encabezado
Authorization: Bearer {{admin-token}}(cómo generarlo)- Endpoints en esta página:
POST /v1/catalog/{{waba_id}}/{{catalog_id}}/items_batch: Gestionar productos por lotePOST /v1/catalog/{{waba_id}}/{{catalog_id}}/localized_items_batch: Gestionar productos localizados por loteGET /v1/catalog/{{waba_id}}/{{catalog_id}}/check_batch_request_status/{{handle}}: Consultar estatus de petición por loteGET /v1/catalog/{{waba_id}}/{{catalog_id}}/products: Listar productos
Crea, actualiza y elimina productos por lote (incluidos productos localizados por idioma y país), consulta el estatus de las peticiones por lote y lista los productos de un catálogo. Si la petición es correcta, todos los servicios responden con el código HTTP 200.
Gestionar productos por lote
Crea, actualiza o elimina productos de un catálogo en una sola petición. El procesamiento es asíncrono: usa los handles de la respuesta para consultar el estatus de la petición.
Petición
Petición de Gestionar productos por lote:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/items_batch |
| Método | POST |
| Tipo | application/json |
Encabezados
Encabezados de Gestionar productos por lote:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| Content-Type | application/json | String | Obligatorio |
| Authorization | Token de administración. Consulta Generar Token de Autenticación. | String | Obligatorio |
Parámetros
Parámetros de Gestionar productos por lote:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| waba_id | ID de la cuenta de WhatsApp Business. | String | Obligatorio |
| catalog_id | ID del catálogo. | String | Obligatorio |
Cuerpo
Campos del cuerpo de Gestionar productos por lote:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| requests | Operaciones a realizar en el catálogo. | Lista de objetos product request | Obligatorio |
Objeto product request
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| method | Operación a realizar. Los valores pueden ser:
| String | Obligatorio |
| retailer_id | Identificador único del producto en tu sistema (por ejemplo, su SKU). Es el valor que envías en productRetailerId en los mensajes de C-Commerce. | String |
|
| data | Información del producto. Con UPDATE, envía solo los campos que quieres cambiar. | Objeto product data |
|
Objeto product data
Los campos marcados como obligatorios solo se validan cuando method es CREATE.
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| name | Título del producto. | String |
|
| description | Descripción del producto. | String |
|
| availability | Disponibilidad del producto. Los valores pueden ser:
| String | Obligatorio |
| condition | Condición del producto. Los valores pueden ser:
| String | Obligatorio |
| price | Precio del producto, por ejemplo, 150.00. Se envía a Meta junto con currency (por ejemplo, 150.00 MXN). | String |
|
| currency | Código de moneda ISO 4217, por ejemplo, MXN o USD. | String |
|
| image_url | URL de la imagen del producto. | String |
|
| url | URL del sitio donde se puede comprar el producto. | String |
|
| brand | Marca del producto. | String | Opcional |
| category | Categoría de producto de Google. Acepta la ruta de la categoría o su ID, por ejemplo, Apparel & Accessories > Clothing > Shirts & Tops o 212. Consulta la taxonomía de Google. | String | Opcional |
Ejemplo
Ejemplo completo de Gestionar productos por lote:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/items_batch' \--header 'Content-Type: application/json' \--header 'Authorization: Bearer {{admin-token}}' \--data '{"requests": [{"method": "CREATE","retailer_id": "CURSO_INGLES_001","data": {"name": "Curso intensivo de inglés","description": "Clases en vivo de 3 horas los sábados.","availability": "in stock","condition": "new","price": "1000.00","currency": "MXN","image_url": "https://www.example.com/images/curso-ingles-001.png","url": "https://www.example.com/cursos/ingles-intensivo","brand": "Academia Ejemplo"}},{"method": "UPDATE","retailer_id": "CURSO_INGLES_002","data": {"availability": "out of stock"}},{"method": "DELETE","retailer_id": "CURSO_INGLES_003"}]}'
Respuesta
Respuesta de Gestionar productos por lote:
| Nombre | Descripción | Tipo |
|---|---|---|
| handles | Identificadores de la petición. Úsalos para consultar su estatus. | Lista de String |
| validation_status | Errores de validación por producto. Solo se incluye si Meta encontró errores. | Lista de objetos validation status |
Objeto validation status
| Nombre | Descripción | Tipo |
|---|---|---|
| retailer_id | retailer_id del producto. | String |
| errors | Errores encontrados en el producto. | Lista de objetos validation error |
Objeto validation error
| Nombre | Descripción | Tipo |
|---|---|---|
| message | Descripción del error. | String |
{"handles": ["AcxExampleHandle0001aBcDeFgHiJkLmNoPqRsTuVwXyZ"]}
Gestionar productos localizados por lote
Crea, actualiza o elimina la información localizada (por idioma o país) de productos que ya existen en el catálogo. El procesamiento es asíncrono: usa los handles de la respuesta para consultar el estatus de la petición.
Petición
Petición de Gestionar productos localizados por lote:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/localized_items_batch |
| Método | POST |
| Tipo | application/json |
Encabezados
Encabezados de Gestionar productos localizados por lote:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| Content-Type | application/json | String | Obligatorio |
| Authorization | Token de administración. Consulta Generar Token de Autenticación. | String | Obligatorio |
Parámetros
Parámetros de Gestionar productos localizados por lote:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| waba_id | ID de la cuenta de WhatsApp Business. | String | Obligatorio |
| catalog_id | ID del catálogo. | String | Obligatorio |
Cuerpo
Campos del cuerpo de Gestionar productos localizados por lote:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| item_type | Tipo de artículo. El valor debe ser PRODUCT_ITEM. | String | Obligatorio |
| requests | Operaciones a realizar en el catálogo. | Lista de objetos localized request | Obligatorio |
Objeto localized request
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| method | Operación a realizar. Los valores pueden ser:
| String | Obligatorio |
| localization | Idioma o país al que aplica la información. | Objeto localization | Obligatorio |
| data | Información localizada del producto. | Objeto localized data | Obligatorio |
Objeto localization
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| type | Tipo de localización. Los valores pueden ser:
| String | Obligatorio |
| value | Idioma o país. Por ejemplo, en_XX o fr_XX para idioma, y US o FR para país. | String | Obligatorio |
Objeto localized data
Envía solo los campos que cambian para la localización indicada.
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| id | retailer_id del producto. | String | Obligatorio |
| title | Título del producto. | String | Opcional |
| description | Descripción del producto. | String | Opcional |
| availability | Disponibilidad del producto en el país, por ejemplo, in stock. | String | Opcional |
| price | Precio y moneda, por ejemplo, 9.99 USD. | String | Opcional |
| sale_price_effective_date | Periodo de la oferta. | String | Opcional |
| link | URL del sitio donde se puede comprar el producto. | String | Opcional |
| brand | Marca del producto. | String | Opcional |
| color | Color del producto. | String | Opcional |
| size | Talla o tamaño del producto. | String | Opcional |
| material | Material del producto. | String | Opcional |
| pattern | Patrón o estampado del producto. | String | Opcional |
Ejemplo
Ejemplo completo de Gestionar productos localizados por lote:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/localized_items_batch' \--header 'Content-Type: application/json' \--header 'Authorization: Bearer {{admin-token}}' \--data '{"item_type": "PRODUCT_ITEM","requests": [{"method": "CREATE","localization": {"type": "LANGUAGE","value": "en_XX"},"data": {"id": "CURSO_INGLES_001","title": "Intensive English course","description": "Live 3-hour classes on Saturdays."}},{"method": "CREATE","localization": {"type": "COUNTRY","value": "US"},"data": {"id": "CURSO_INGLES_001","availability": "in stock","price": "59.99 USD"}}]}'
Respuesta
Respuesta de Gestionar productos localizados por lote:
| Nombre | Descripción | Tipo |
|---|---|---|
| handles | Identificadores de la petición. Úsalos para consultar su estatus. | Lista de String |
{"handles": ["AcxExampleHandle0002aBcDeFgHiJkLmNoPqRsTuVwXyZ"]}
Consultar estatus de petición por lote
Consulta el resultado de una petición de productos por lote o de productos localizados por lote.
Petición
Petición de Consultar estatus de petición por lote:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/check_batch_request_status/{{handle}} |
| Método | GET |
Encabezados
Encabezados de Consultar estatus de petición por lote:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| Authorization | Token de administración. Consulta Generar Token de Autenticación. | String | Obligatorio |
Parámetros
Parámetros de Consultar estatus de petición por lote:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| waba_id | ID de la cuenta de WhatsApp Business. | String | Obligatorio |
| catalog_id | ID del catálogo. | String | Obligatorio |
| handle | Uno de los handles devueltos por la petición por lote. | String | Obligatorio |
Ejemplo
Ejemplo completo de Consultar estatus de petición por lote:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/check_batch_request_status/{{handle}}' \--header 'Authorization: Bearer {{admin-token}}'
Respuesta
Respuesta de Consultar estatus de petición por lote:
| Nombre | Descripción | Tipo |
|---|---|---|
| data | Estatus de la petición. | Lista de objetos batch status |
Objeto batch status
| Nombre | Descripción | Tipo |
|---|---|---|
| handle | Identificador de la petición. | String |
| status | Estatus de la petición, por ejemplo, finished. | String |
| errors_total_count | Número total de errores. | Number |
| errors | Errores encontrados al procesar la petición. | Lista de objetos batch error |
Objeto batch error
| Nombre | Descripción | Tipo |
|---|---|---|
| line | Posición del elemento en la lista requests. | Number |
| id | retailer_id del producto. | String |
| message | Descripción del error. | String |
Petición sin errores:
{"data": [{"handle": "AcxExampleHandle0001aBcDeFgHiJkLmNoPqRsTuVwXyZ","status": "finished","errors_total_count": 0,"errors": []}]}
Petición con errores:
{"data": [{"handle": "AcxExampleHandle0002aBcDeFgHiJkLmNoPqRsTuVwXyZ","status": "finished","errors_total_count": 1,"errors": [{"line": 0,"id": "CURSO_INGLES_001","message": "Valor no válido: El valor pasado en la posición 0 (id=CURSO_INGLES_001) no es válido."}]}]}
Listar productos
Petición
Petición de Listar productos:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/products |
| Método | GET |
Encabezados
Encabezados de Listar productos:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| Authorization | Token de administración. Consulta Generar Token de Autenticación. | String | Obligatorio |
Parámetros
Parámetros de Listar productos:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| waba_id | ID de la cuenta de WhatsApp Business. | String | Obligatorio |
| catalog_id | ID del catálogo. | String | Obligatorio |
| return_only_approved_products | Si es true, solo se devuelven los productos aprobados por Meta. Se envía como parámetro de consulta. | Boolean |
|
Ejemplo
Ejemplo completo de Listar productos:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/catalog/{{waba_id}}/{{catalog_id}}/products?return_only_approved_products=true' \--header 'Authorization: Bearer {{admin-token}}'
Respuesta
Respuesta de Listar productos:
El servicio responde con una lista de productos.
| Nombre | Descripción | Tipo |
|---|---|---|
| id | ID del producto en Meta. | String |
| retailerId | Identificador del producto en tu sistema. | String |
| name | Título del producto. | String |
| description | Descripción del producto. | String |
| availability | Disponibilidad del producto. | String |
| condition | Condición del producto. | String |
| price | Precio con formato, por ejemplo, $1,000.00. | String |
| currency | Código de moneda ISO 4217. | String |
| inventory | Cantidad de unidades en inventario. | Integer |
| imageUrl | URL de la imagen del producto. | String |
| url | URL del sitio donde se puede comprar el producto. | String |
[{"id": "7001234567890123","name": "Curso intensivo de inglés","retailerId": "CURSO_INGLES_001","imageUrl": "https://www.example.com/images/curso-ingles-001.png","inventory": 100,"availability": "in stock","price": "$1,000.00","currency": "MXN","condition": "new","description": "Clases en vivo de 3 horas los sábados.","url": "https://www.example.com/cursos/ingles-intensivo"}]
