b24_products_list
Retrieve products from the catalog filtered by section, price range, active status, and other criteria. Specify fields to return for targeted results.
Instructions
Lista productos del catálogo con filtros por sección, precio, estado activo, etc.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filtros. Ejemplo: { "SECTION_ID": 5, "ACTIVE": "Y" } o { ">=PRICE": 100, "<=PRICE": 500 } para rango de precios | |
| select | No | Campos a retornar. Default: ID, NAME, ACTIVE, PRICE, CURRENCY_ID, SECTION_ID | |
| all_pages | No | ||
| webhook_url | No |
Implementation Reference
- index.js:263-265 (registration)Tool registration with description, schema, and handler wrapper
server.tool('b24_products_list', 'Lista productos del catálogo con filtros por sección, precio, estado activo, etc.', productsListSchema.shape, wrap(productsList)); - index.js:66-72 (registration)Import of productsListSchema and productsList from catalog-products.js
import { productsListSchema, productsList, productsGetSchema, productsGet, productsCreateSchema, productsCreate, productsUpdateSchema, productsUpdate, productsSectionsSchema, productsSections, } from './src/tools/catalog-products.js'; - src/tools/catalog-products.js:8-18 (schema)Zod schema defining the input parameters: filter (optional, default {}), select (optional string array), all_pages (boolean, default false), webhook_url (optional URL)
export const productsListSchema = z.object({ filter: z.record(z.any()).optional().default({}).describe( 'Filtros. Ejemplo: { "SECTION_ID": 5, "ACTIVE": "Y" } ' + 'o { ">=PRICE": 100, "<=PRICE": 500 } para rango de precios' ), select: z.array(z.string()).optional().describe( 'Campos a retornar. Default: ID, NAME, ACTIVE, PRICE, CURRENCY_ID, SECTION_ID' ), all_pages: z.boolean().optional().default(false), webhook_url: z.string().url().optional(), }); - src/tools/catalog-products.js:20-30 (handler)Main handler function: calls Bitrix24 catalog.product.list API with filter/select, optionally fetches all pages via pagination helper, returns portal, count, and products array
export async function productsList({ filter = {}, select, all_pages = false, webhook_url }) { const client = new Bitrix24Client(resolveWebhook(webhook_url)); const params = { filter, select: select ?? ['ID', 'NAME', 'ACTIVE', 'PRICE', 'CURRENCY_ID', 'SECTION_ID', 'DESCRIPTION'], }; const items = all_pages ? await fetchAllPages(client, 'catalog.product.list', params) : (await client.call('catalog.product.list', params)).result ?? []; return { portal: client.portal, count: items.length, products: items }; }