# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for VirtoCommerce. Catalog API version: 1.0.0 extends: openapi/virto-commerce-catalog-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 92 - target: $.paths['/api/catalog/automatic-link-queries/search'].post update: x-apievangelist-phrasing: intent: Search automatic category link rules effect: read questions: - Which automatic link rules feed products into a virtual category? - Can I list the saved automatic linking queries for one target category? instructions: - text: Search automatic link rules that target category {categoryId}. slots: categoryId: requestBody.targetCategoryId - text: Find automatic link queries matching {keyword}. slots: keyword: requestBody.keyword method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/automatic-link-queries'].put update: x-apievangelist-phrasing: intent: Update an automatic category link rule effect: write questions: - How do I change the source query of an existing automatic link rule? - Can I point an automatic link rule at a different source catalog? instructions: - text: Update automatic link rule {id} to use source query {query}. slots: id: requestBody.id query: requestBody.sourceCatalogQuery - text: Change existing link rule {id} to pull from catalog {catalogId}. slots: id: requestBody.id catalogId: requestBody.sourceCatalogId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/automatic-link-queries'].post update: x-apievangelist-phrasing: intent: Create an automatic category link rule effect: write questions: - How can a virtual category be filled automatically from a query on another catalog? - What does a new automatic link rule need, like a source catalog and a target category? instructions: - text: Create an automatic link rule that fills category {categoryId} from catalog {catalogId}. slots: categoryId: requestBody.targetCategoryId catalogId: requestBody.sourceCatalogId - text: Add a new rule linking products matching {query} into category {categoryId}. slots: query: requestBody.sourceCatalogQuery categoryId: requestBody.targetCategoryId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/automatic-link-queries'].delete update: x-apievangelist-phrasing: intent: Delete automatic category link rules effect: destructive questions: - Can I remove automatic link rules I no longer need? - What deletes several automatic link queries by id? instructions: - text: Delete automatic link rules {ids}. slots: ids: query.ids - text: Remove the automatic link query {ids}. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/automatic-link-queries/{id}'].get update: x-apievangelist-phrasing: intent: Get an automatic category link rule effect: read questions: - What source query does a particular automatic link rule run? - How do I view one automatic link rule by id? instructions: - text: Show automatic link rule {id}. slots: id: path.id - text: Get the source catalog and query of link rule {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/associations/{productId}'].get update: x-apievangelist-phrasing: intent: List one product's associations effect: read questions: - Which related, accessory or cross-sell products are linked to this product? - What associations does a single product have? instructions: - text: List the associations of product {productId}. slots: productId: path.productId - text: Show related and cross-sell items for product {productId}. slots: productId: path.productId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/associations/get/multiple'].post update: x-apievangelist-phrasing: intent: List associations for several products effect: read questions: - Can I fetch associations for a whole batch of products at once? - Is there a way to load related products for multiple items in one request? instructions: - text: Get associations for this batch of product ids. - text: Load related-product links for multiple products at once. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/associations'].post update: x-apievangelist-phrasing: intent: Save product associations effect: write questions: - How do I link accessories or related items to a product? - Can I update several product associations in one call? instructions: - text: Save these product associations. - text: Link these accessory products to their main product as associations. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/associations'].delete update: x-apievangelist-phrasing: intent: Delete product associations effect: destructive questions: - How can I unlink a related product from another product? - Can I delete several associations at once by id? instructions: - text: Delete product associations {ids}. slots: ids: query.ids - text: Remove the association {ids} between two products. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/associations/search'].post update: x-apievangelist-phrasing: intent: Search product associations effect: read questions: - Which products are associated in a particular group, like accessories? - Can I find associations that point to a given product? instructions: - text: Search associations in group {group}. slots: group: requestBody.group - text: Find associations that point to products {associatedIds}. slots: associatedIds: requestBody.associatedObjectIds method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/associations/{id}'].patch update: x-apievangelist-phrasing: intent: Partially update a product association effect: write questions: - Can I change just the priority or quantity on one association? - Is JSON Patch available for product associations? instructions: - text: Patch product association {id}. slots: id: path.id - text: Apply a partial update to association {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/brand-settings/store/{storeId}'].get update: x-apievangelist-phrasing: intent: Get a store's brand settings effect: read questions: - Are brand pages enabled for a particular store? - Which property and catalog does a store use for brands? instructions: - text: Show the brand settings for store {storeId}. slots: storeId: path.storeId - text: Check if brands are enabled in store {storeId}. slots: storeId: path.storeId method: generated generated: '2026-09-26' - target: $.paths['/api/brand-settings'].put update: x-apievangelist-phrasing: intent: Update a store's brand settings effect: write questions: - How do I turn on brands for a store? - Can I choose which product property holds the brand name? instructions: - text: Enable brands for store {storeId} using property {property}. slots: storeId: requestBody.storeId property: requestBody.brandPropertyName - text: Set the brand catalog for store {storeId} to {catalogId}. slots: storeId: requestBody.storeId catalogId: requestBody.brandCatalogId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/catalogs/search'].post update: x-apievangelist-phrasing: intent: Search catalogs effect: read questions: - What catalogs exist in my Virto Commerce platform? - Can I list only the virtual catalogs? instructions: - text: Search catalogs matching {keyword}. slots: keyword: requestBody.keyword - text: List catalogs where virtual is {isVirtual}. slots: isVirtual: requestBody.isVirtual method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/catalogs/{id}'].get update: x-apievangelist-phrasing: intent: Get a catalog by id effect: read questions: - What languages and properties does a specific catalog have? - How do I load one catalog with all its details? instructions: - text: Get catalog {id}. slots: id: path.id - text: Show catalog {id} with response group {group}. slots: id: path.id group: query.responseGroup method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/catalogs/{id}'].delete update: x-apievangelist-phrasing: intent: Delete a catalog effect: destructive questions: - Can I delete an entire catalog? - What happens when I remove a catalog by its id? instructions: - text: Delete catalog {id}. slots: id: path.id - text: Remove the whole catalog {id} permanently. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/catalogs/{id}'].patch update: x-apievangelist-phrasing: intent: Partially update a catalog effect: write questions: - Can I change one field on a catalog without resending it all? - Is there a JSON Patch endpoint for catalogs? instructions: - text: Patch catalog {id} with only the changed fields. slots: id: path.id - text: Apply a partial update to catalog {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/catalogs/outer/{outerId}'].get update: x-apievangelist-phrasing: intent: Get a catalog by external id effect: read questions: - How can I find a catalog using the key from my PIM or ERP? - Can I look up a catalog by outer id? instructions: - text: Get the catalog with outer id {outerId}. slots: outerId: path.outerId - text: Look up catalog by integration key {outerId}. slots: outerId: path.outerId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/catalogs/getnew'].get update: x-apievangelist-phrasing: intent: Get a template for a new catalog effect: read questions: - What does a blank common catalog look like before I save it? - Can I get default values for a new regular catalog? instructions: - text: Give me a template for a new common catalog. - text: Fetch the blank regular catalog object. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/catalogs/getnewvirtual'].get update: x-apievangelist-phrasing: intent: Get a template for a new virtual catalog effect: read questions: - What does an empty virtual catalog template contain? - Can I get default values for a new virtual catalog? instructions: - text: Give me a template for a new virtual catalog. - text: Fetch the blank virtual catalog object. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/catalogs'].put update: x-apievangelist-phrasing: intent: Update a catalog effect: write questions: - How do I add a language to an existing catalog? - Can I rename a catalog or change its default language? instructions: - text: Update catalog {id} to default language {language}. slots: id: requestBody.id language: requestBody.defaultLanguage - text: Rename existing catalog {id} to {name}. slots: id: requestBody.id name: requestBody.name method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/catalogs'].post update: x-apievangelist-phrasing: intent: Create a catalog effect: write questions: - How do I create a new product catalog? - Can I create a virtual catalog that aggregates other catalogs? instructions: - text: Create a catalog called {name}. slots: name: requestBody.name - text: Create catalog {name} with virtual set to {isVirtual} and default language {language}. slots: name: requestBody.name isVirtual: requestBody.isVirtual language: requestBody.defaultLanguage method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories/{id}'].get update: x-apievangelist-phrasing: intent: Get a category by id effect: read questions: - What properties and SEO info does a specific category have? - How do I load one category by its id? instructions: - text: Get category {id}. slots: id: path.id - text: Show category {id} with response group {group}. slots: id: path.id group: query.responseGroup method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories/{id}'].patch update: x-apievangelist-phrasing: intent: Partially update a category effect: write questions: - Can I deactivate a category by patching a single field? - Is JSON Patch supported for categories? instructions: - text: Patch category {id} with only the changed fields. slots: id: path.id - text: Apply a partial update to category {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories/outer/{outerId}'].get update: x-apievangelist-phrasing: intent: Get a category by external id effect: read questions: - How can I find a category using my ERP's integration key? - Can I fetch a category by outer id instead of its Virto id? instructions: - text: Get the category with outer id {outerId}. slots: outerId: path.outerId - text: Look up category by integration key {outerId}. slots: outerId: path.outerId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories'].get update: x-apievangelist-phrasing: intent: Get several categories by id effect: read questions: - Can I load multiple categories at once when I have their ids? - What is the quickest way to fetch a handful of categories together? instructions: - text: Get categories {ids}. slots: ids: query.ids - text: Load categories {ids} with response group {group}. slots: ids: query.ids group: query.respGroup method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories'].post update: x-apievangelist-phrasing: intent: Create or update a single category effect: write questions: - How do I add a new category to a catalog? - Can I create a subcategory under an existing parent category? instructions: - text: Create category {name} with code {code} in catalog {catalogId}. slots: name: requestBody.name code: requestBody.code catalogId: requestBody.catalogId - text: Add subcategory {name} under parent category {parentId}. slots: name: requestBody.name parentId: requestBody.parentId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories'].delete update: x-apievangelist-phrasing: intent: Delete categories effect: destructive questions: - Can I delete several categories by id? - What removes a category from a catalog? instructions: - text: Delete categories {ids}. slots: ids: query.ids - text: Remove the category {ids}. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories/plenty'].post update: x-apievangelist-phrasing: intent: Get many categories by id in one post effect: read questions: - Can I fetch a very large list of categories by posting their ids? - What if my list of category ids is too long for a query string? instructions: - text: Post this long list of category ids and return the categories. - text: Fetch plenty of categories by id with response group {group}. slots: group: query.respGroup method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/{catalogId}/categories-by-codes'].post update: x-apievangelist-phrasing: intent: Get categories by code within a catalog effect: read questions: - Can I find categories in a catalog using their codes? - How do I map my own category codes back to Virto categories? instructions: - text: Get categories by these codes in catalog {catalogId}. slots: catalogId: path.catalogId - text: Look up category codes in catalog {catalogId} with response group {group}. slots: catalogId: path.catalogId group: query.responseGroup method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/{catalogId}/categories/newcategory'].get update: x-apievangelist-phrasing: intent: Get a template for a new category effect: read questions: - What does a blank category look like before I create it in a catalog? - Can I get a new category template under a specific parent? instructions: - text: Give me a new category template for catalog {catalogId}. slots: catalogId: path.catalogId - text: Fetch a blank category for catalog {catalogId} under parent {parentId}. slots: catalogId: path.catalogId parentId: query.parentCategoryId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories/batch'].post update: x-apievangelist-phrasing: intent: Create or update categories in bulk effect: write questions: - Can I save a whole batch of categories in one request? - Is there a bulk import for categories? instructions: - text: Save this batch of categories. - text: Bulk create or update all these categories at once. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories/{id}/automatic-links'].post update: x-apievangelist-phrasing: intent: Run automatic links for a category effect: write questions: - How do I refresh the automatically linked products in a category? - Can I re-run a category's automatic link rule now? instructions: - text: Update the automatic links for category {id}. slots: id: path.id - text: Rebuild auto-linked products in category {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories/{id}/automatic-links'].delete update: x-apievangelist-phrasing: intent: Remove a category's automatic links effect: destructive questions: - Can I clear all automatically linked products from a category? - What undoes the automatic links created for a category? instructions: - text: Delete the automatic links in category {id}. slots: id: path.id - text: Clear auto-linked products from category {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/configurations/{id}'].get update: x-apievangelist-phrasing: intent: Get a product configuration effect: read questions: - What sections does a configurable product's configuration have? - How do I load one product configuration by id? instructions: - text: Get product configuration {id}. slots: id: path.id - text: Show the sections of configuration {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/configurations/{id}'].patch update: x-apievangelist-phrasing: intent: Partially update a product configuration effect: write questions: - Can I toggle a product configuration active with a patch? - Is JSON Patch supported for product configurations? instructions: - text: Patch product configuration {id}. slots: id: path.id - text: Apply a partial update to configuration {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/configurations/search'].post update: x-apievangelist-phrasing: intent: Search product configurations effect: read questions: - Which products have a configuration set up? - Can I find only the active configurations for a product? instructions: - text: Search configurations for product {productId}. slots: productId: requestBody.productId - text: List product configurations where active is {isActive}. slots: isActive: requestBody.isActive method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/configurations'].post update: x-apievangelist-phrasing: intent: Create or update a product configuration effect: write questions: - How do I make a product configurable with option sections? - Can I add sections to a product's configuration? instructions: - text: Create a configuration for product {productId} with sections {sections}. slots: productId: requestBody.productId sections: requestBody.sections - text: Save the configuration for product {productId} as active {isActive}. slots: productId: requestBody.productId isActive: requestBody.isActive method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/search/products'].post update: x-apievangelist-phrasing: intent: Search products in the search index effect: read questions: - How do I run a storefront-style product search with facets and price ranges? - Can I search indexed products within a price range for a store? instructions: - text: Search the product index for {phrase} in store {storeId}. slots: phrase: requestBody.searchPhrase storeId: requestBody.storeId - text: Find indexed products in catalog {catalogId} priced {priceRange} in {currency}. slots: catalogId: requestBody.catalogId priceRange: requestBody.priceRange currency: requestBody.currency method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/search/products/suggestions'].post update: x-apievangelist-phrasing: intent: Get product search suggestions effect: read questions: - Can I get autocomplete suggestions as a shopper types a product name? - How many product suggestions can I request for a partial query? instructions: - text: Suggest products for the partial query {query}. slots: query: query.Query - text: Give me {size} autocomplete suggestions for {query} in catalog {catalogId}. slots: size: query.Size query: query.Query catalogId: query.CatalogId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/search/categories'].post update: x-apievangelist-phrasing: intent: Search categories in the search index effect: read questions: - Can I search indexed categories the way the storefront does? - Is fuzzy matching available when searching categories? instructions: - text: Search the category index for {phrase} in store {storeId}. slots: phrase: requestBody.searchPhrase storeId: requestBody.storeId - text: Fuzzy search indexed categories in catalog {catalogId} for {keyword}. slots: catalogId: requestBody.catalogId keyword: requestBody.keyword method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/listentries'].post update: x-apievangelist-phrasing: intent: Browse catalog entries in a category effect: read questions: - What products and subcategories sit inside a given category? - Can I browse only buyable items in a catalog, including child categories? instructions: - text: List the categories and products in category {categoryId}. slots: categoryId: requestBody.categoryId - text: Browse entries in catalog {catalogId} matching code {code}. slots: catalogId: requestBody.catalogId code: requestBody.code method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/listentrylinks'].post update: x-apievangelist-phrasing: intent: Link products or categories to categories effect: write questions: - How do I show one product in several categories without copying it? - Can I link a category into a virtual catalog? instructions: - text: Create these links from items to their parent categories. - text: Link these products into additional categories and catalogs. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/listentrylinks/bulkcreate'].post update: x-apievangelist-phrasing: intent: Bulk link search results to a category effect: write questions: - Can I link every product that matches a search into one category? - Is there a bulk way to add many items to a virtual category? instructions: - text: Link all entries matching {criteria} into category {categoryId}. slots: criteria: requestBody.searchCriteria categoryId: requestBody.categoryId - text: Bulk link search results into catalog {catalogId}. slots: catalogId: requestBody.catalogId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/listentrylinks/search'].post update: x-apievangelist-phrasing: intent: Search category and catalog links effect: read questions: - Which items are linked into a given category? - Can I see only the links that were created automatically? instructions: - text: Search links into categories {categoryIds}. slots: categoryIds: requestBody.categoryIds - text: List links in catalogs {catalogIds} where automatic is {isAutomatic}. slots: catalogIds: requestBody.catalogIds isAutomatic: requestBody.isAutomatic method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/listentrylinks/delete'].post update: x-apievangelist-phrasing: intent: Unlink products or categories effect: destructive questions: - How do I take a linked product out of a category without deleting it? - Can I unlink categories from a virtual catalog? instructions: - text: Unlink these items from their linked parent categories. - text: Remove these category and catalog links without deleting the products. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/listentries/move'].post update: x-apievangelist-phrasing: intent: Move products or categories effect: write questions: - Can I move products to a different category? - Is it possible to move a category into another catalog? instructions: - text: Move these entries to category {category}. slots: category: requestBody.category - text: Move entries {entries} into catalog {catalogId}. slots: entries: requestBody.listEntries catalogId: requestBody.catalogId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/listentries/delete'].post update: x-apievangelist-phrasing: intent: Bulk delete catalog entries by criteria effect: destructive questions: - Can I delete every product in a category that matches a filter? - Is there a bulk delete driven by search criteria instead of ids? instructions: - text: Bulk delete all entries in category {categoryId}. slots: categoryId: requestBody.categoryId - text: Delete every catalog entry in {catalogId} matching {keyword}. slots: catalogId: requestBody.catalogId keyword: requestBody.keyword method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/measures/{id}'].get update: x-apievangelist-phrasing: intent: Get a unit of measure effect: read questions: - Which units belong to a particular measure, like weight or length? - How do I view one measure by id? instructions: - text: Get measure {id}. slots: id: path.id - text: Show the units defined in measure {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/measures/{id}'].patch update: x-apievangelist-phrasing: intent: Partially update a measure effect: write questions: - Can I patch just the name of a measure? - Is JSON Patch supported for units of measure? instructions: - text: Patch measure {id}. slots: id: path.id - text: Apply a partial update to measure {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/measures/search'].post update: x-apievangelist-phrasing: intent: Search units of measure effect: read questions: - What measures and units are defined in my catalog? - Can I search measures by keyword? instructions: - text: Search measures matching {keyword}. slots: keyword: requestBody.keyword - text: List all defined measures. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/measures'].put update: x-apievangelist-phrasing: intent: Update a unit of measure effect: write questions: - How do I add units to an existing measure? - Can I rename a measure or change its code? instructions: - text: Update measure {id} with units {units}. slots: id: requestBody.id units: requestBody.units - text: Rename existing measure {id} to {name}. slots: id: requestBody.id name: requestBody.name method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/measures'].post update: x-apievangelist-phrasing: intent: Create a unit of measure effect: write questions: - How do I define a new measure like volume for my products? - Can I add a custom measure to the catalog? instructions: - text: Create a new measure from these details. - text: Define a new custom unit of measure. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/measures'].delete update: x-apievangelist-phrasing: intent: Delete units of measure effect: destructive questions: - Can I remove measures I no longer use? - What deletes several measures by id? instructions: - text: Delete measures {ids}. slots: ids: query.ids - text: Remove the measure {ids}. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/measures/default'].get update: x-apievangelist-phrasing: intent: Get the default measures effect: read questions: - Which measures come built in by default? - What default units of measure does the catalog provide? instructions: - text: Show the default measures. - text: List the built-in units of measure. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/{id}'].get update: x-apievangelist-phrasing: intent: Get a product by id effect: read questions: - What are the properties, images and variations of a specific product? - How do I load one product by its id? instructions: - text: Get product {id}. slots: id: path.id - text: Show product {id} with response group {group}. slots: id: path.id group: query.respGroup method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/{id}'].patch update: x-apievangelist-phrasing: intent: Partially update a product effect: write questions: - Can I change a single product field, like its name, with a patch? - Is JSON Patch supported for one product? instructions: - text: Patch product {id} with only the changed fields. slots: id: path.id - text: Apply a JSON Patch to product {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/outer/{outerId}'].get update: x-apievangelist-phrasing: intent: Get a product by external id effect: read questions: - How can I find a product using its ERP or PIM key? - Can I fetch a product by outer id? instructions: - text: Get the product with outer id {outerId}. slots: outerId: path.outerId - text: Look up product by integration key {outerId}. slots: outerId: path.outerId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/{catalogId}/products-by-codes'].post update: x-apievangelist-phrasing: intent: Get products by SKU code in a catalog effect: read questions: - Can I find products in a catalog by their SKU codes? - How do I map my SKUs back to Virto products? instructions: - text: Get products by these SKU codes in catalog {catalogId}. slots: catalogId: path.catalogId - text: Look up product codes in catalog {catalogId} with response group {group}. slots: catalogId: path.catalogId group: query.responseGroup method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products'].get update: x-apievangelist-phrasing: intent: Get several products by id effect: read questions: - Can I load multiple products at once when I have their ids? - What is the quickest way to fetch a few products together? instructions: - text: Get products {ids}. slots: ids: query.ids - text: Load products {ids} with response group {group}. slots: ids: query.ids group: query.respGroup method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products'].post update: x-apievangelist-phrasing: intent: Create or update a single product effect: write questions: - How do I add a new product to a category? - Can I set a product's GTIN, weight and minimum order quantity when saving it? instructions: - text: Create product {name} with SKU {code} in catalog {catalogId}. slots: name: requestBody.name code: requestBody.code catalogId: requestBody.catalogId - text: Save product {name} in category {categoryId} with GTIN {gtin}. slots: name: requestBody.name categoryId: requestBody.categoryId gtin: requestBody.gtin method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products'].delete update: x-apievangelist-phrasing: intent: Delete products effect: destructive questions: - Can I delete several products by id? - What removes a product from the catalog? instructions: - text: Delete products {ids}. slots: ids: query.ids - text: Remove the product {ids}. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products'].patch update: x-apievangelist-phrasing: intent: Partially update many products effect: write questions: - Can I patch fields on many products in one request? - What must each patch document contain in a bulk product patch? instructions: - text: Bulk patch these products, each identified by its id operation. - text: Apply partial updates to multiple products at once. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/plenty'].post update: x-apievangelist-phrasing: intent: Get many products by id in one post effect: read questions: - Can I fetch a very long list of products by posting their ids? - What if I have too many product ids for a query string? instructions: - text: Post this long list of product ids and return the products. - text: Fetch plenty of products by id with response group {group}. slots: group: query.respGroup method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/{catalogId}/products/getnew'].get update: x-apievangelist-phrasing: intent: Get a new product template for a catalog effect: read questions: - What does a blank product look like when it sits directly in a catalog? - Can I get a new product template without choosing a category? instructions: - text: Give me a new product template for catalog {catalogId}. slots: catalogId: path.catalogId - text: Fetch a blank uncategorized product for catalog {catalogId}. slots: catalogId: path.catalogId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/{catalogId}/categories/{categoryId}/products/getnew'].get update: x-apievangelist-phrasing: intent: Get a new product template for a category effect: read questions: - What does a blank product look like inside a specific category? - Can I get a new product template that inherits a category's properties? instructions: - text: Give me a new product template for category {categoryId} in catalog {catalogId}. slots: categoryId: path.categoryId catalogId: path.catalogId - text: Fetch a blank product for catalog {catalogId}, category {categoryId}. slots: catalogId: path.catalogId categoryId: path.categoryId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/{productId}/getnewvariation'].get update: x-apievangelist-phrasing: intent: Get a template for a new product variation effect: read questions: - How do I start a new size or color variation of a product? - What does a blank variation template include? instructions: - text: Give me a new variation template for product {productId}. slots: productId: path.productId - text: Fetch a blank variation of product {productId}. slots: productId: path.productId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/{productId}/clone'].get update: x-apievangelist-phrasing: intent: Clone a product effect: read questions: - Can I duplicate an existing product as a starting point? - Does cloning a product save the copy or just return it? instructions: - text: Clone product {productId}. slots: productId: path.productId - text: Make a copy of product {productId} to edit. slots: productId: path.productId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/{productId}/{language}'].patch update: x-apievangelist-phrasing: intent: Update given product properties in a language effect: write questions: - Can I update only certain property values of a product for one language? - How do I change a product's localized properties without touching the rest? instructions: - text: Update only the given properties of product {productId} in {language}. slots: productId: path.productId language: path.language - text: Set localized property values on product {productId} for language {language}. slots: productId: path.productId language: path.language method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/products/batch'].post update: x-apievangelist-phrasing: intent: Create or update products in bulk effect: write questions: - Can I import a batch of products in one request? - Is there a bulk save for products? instructions: - text: Save this batch of products. - text: Bulk create or update all these products at once. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/properties/{propertyId}'].get update: x-apievangelist-phrasing: intent: Get a property definition effect: read questions: - What value type and validation rules does a property have? - How do I view one property's metadata by id? instructions: - text: Get property {propertyId}. slots: propertyId: path.propertyId - text: Show the metadata of property {propertyId}. slots: propertyId: path.propertyId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/{catalogId}/properties/getnew'].get update: x-apievangelist-phrasing: intent: Get a template for a new catalog property effect: read questions: - What does a blank catalog-level property look like? - Can I get a new property template scoped to a catalog? instructions: - text: Give me a new property template for catalog {catalogId}. slots: catalogId: path.catalogId - text: Fetch a blank catalog-level property for {catalogId}. slots: catalogId: path.catalogId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/categories/{categoryId}/properties/getnew'].get update: x-apievangelist-phrasing: intent: Get a template for a new category property effect: read questions: - What does a blank category-level property look like? - Can I get a new property template scoped to one category? instructions: - text: Give me a new property template for category {categoryId}. slots: categoryId: path.categoryId - text: Fetch a blank category-level property for {categoryId}. slots: categoryId: path.categoryId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/properties'].post update: x-apievangelist-phrasing: intent: Create or update a property effect: write questions: - How do I add a new product property like color to a catalog? - Can a property be multivalue, required or backed by a dictionary? instructions: - text: Create property {name} of value type {valueType} in catalog {catalogId}. slots: name: requestBody.name valueType: requestBody.valueType catalogId: requestBody.catalogId - text: Save property {name} on category {categoryId} as required {required}. slots: name: requestBody.name categoryId: requestBody.categoryId required: requestBody.required method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/properties'].delete update: x-apievangelist-phrasing: intent: Delete a property effect: destructive questions: - Can I delete a property and also remove its values from products? - What removes a property definition from the catalog? instructions: - text: Delete property {id}. slots: id: query.id - text: Delete property {id} and its values, with delete values set to {deleteValues}. slots: id: query.id deleteValues: query.doDeleteValues method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/properties/validate-name'].post update: x-apievangelist-phrasing: intent: Validate a product-level property name effect: read questions: - Is a new unmanaged property name already used on this product? - Can I check a product-level property name before renaming it? instructions: - text: Check if property name {name} is valid on product {productId}. slots: name: requestBody.name productId: requestBody.productId - text: Validate renaming product property {originalName} to {name}. slots: originalName: requestBody.originalName name: requestBody.name method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/properties/validate-property-name'].post update: x-apievangelist-phrasing: intent: Validate a catalog or category property name effect: read questions: - Would a new property name clash with one already in the catalog or category? - Can I validate a property name and type before creating it? instructions: - text: Validate property name {propertyName} for catalog {catalogId}. slots: propertyName: requestBody.propertyName catalogId: requestBody.catalogId - text: Check that {propertyName} of type {type} is free in category {categoryId}. slots: propertyName: requestBody.propertyName type: requestBody.propertyType categoryId: requestBody.categoryId method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/properties/{id}'].patch update: x-apievangelist-phrasing: intent: Partially update a property effect: write questions: - Can I hide a property by patching a single field? - Is JSON Patch available for property definitions? instructions: - text: Patch property {id}. slots: id: path.id - text: Apply a partial update to property definition {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/dictionaryitems/search'].post update: x-apievangelist-phrasing: intent: Search property dictionary values effect: read questions: - What allowed values are in a dictionary property like color? - Can I search dictionary items for specific properties? instructions: - text: Search dictionary items for properties {propertyIds}. slots: propertyIds: requestBody.propertyIds - text: Find dictionary values matching {keyword} in catalogs {catalogIds}. slots: keyword: requestBody.keyword catalogIds: requestBody.catalogIds method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/dictionaryitems'].post update: x-apievangelist-phrasing: intent: Save property dictionary values effect: write questions: - How do I add new allowed values to a dictionary property? - Can I update several dictionary items at once? instructions: - text: Save these property dictionary items. - text: Add these allowed values to the dictionary property. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/dictionaryitems'].delete update: x-apievangelist-phrasing: intent: Delete property dictionary values effect: destructive questions: - Can I remove values from a dictionary property? - What deletes dictionary items by id? instructions: - text: Delete dictionary items {ids}. slots: ids: query.ids - text: Remove the allowed value {ids} from its dictionary. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/dictionaryitems/{id}'].patch update: x-apievangelist-phrasing: intent: Partially update a dictionary value effect: write questions: - Can I change the alias of one dictionary item with a patch? - Is JSON Patch supported for dictionary items? instructions: - text: Patch dictionary item {id}. slots: id: path.id - text: Apply a partial update to dictionary value {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/propertygroups/{id}'].get update: x-apievangelist-phrasing: intent: Get a property group effect: read questions: - What does a property group contain, like its display order and names? - How do I load one property group by id? instructions: - text: Get property group {id}. slots: id: path.id - text: Show property group {id} with response group {group}. slots: id: path.id group: query.responseGroup method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/propertygroups/search'].post update: x-apievangelist-phrasing: intent: Search property groups effect: read questions: - Which property groups are defined in a catalog? - Can I search property groups by keyword? instructions: - text: List property groups in catalog {catalogId}. slots: catalogId: requestBody.catalogId - text: Search property groups matching {keyword}. slots: keyword: requestBody.keyword method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/propertygroups'].post update: x-apievangelist-phrasing: intent: Create or update a property group effect: write questions: - How do I group product properties into sections like Specifications? - Can I set a property group's display order? instructions: - text: Save property group {name} in catalog {catalogId}. slots: name: requestBody.name catalogId: requestBody.catalogId - text: Set display order {order} on property group {name}. slots: order: requestBody.displayOrder name: requestBody.name method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/propertygroups'].delete update: x-apievangelist-phrasing: intent: Delete property groups effect: destructive questions: - Can I remove property groups I no longer use? - What deletes property groups by id? instructions: - text: Delete property groups {ids}. slots: ids: query.ids - text: Remove the property group {ids}. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/videos/options'].get update: x-apievangelist-phrasing: intent: Get product video options effect: read questions: - Is video support configured for the catalog? - What video settings does the platform configuration provide? instructions: - text: Show the video options from configuration. - text: Get the configured catalog video settings. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/videos/create'].post update: x-apievangelist-phrasing: intent: Create a video from a URL effect: write questions: - How do I attach a video to a product from its URL? - Can I set the language and sort order of a product video? instructions: - text: Create a video from {url} for product {ownerId}. slots: url: requestBody.contentUrl ownerId: requestBody.ownerId - text: Add video {url} to {ownerType} {ownerId} in language {language}. slots: url: requestBody.contentUrl ownerType: requestBody.ownerType ownerId: requestBody.ownerId language: requestBody.languageCode method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/videos/search'].post update: x-apievangelist-phrasing: intent: Search product videos effect: read questions: - Which videos are attached to a product? - Can I search videos for several owners at once? instructions: - text: Search videos for owners {ownerIds}. slots: ownerIds: requestBody.ownerIds - text: List videos of owner type {ownerType} matching {keyword}. slots: ownerType: requestBody.ownerType keyword: requestBody.keyword method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/videos'].post update: x-apievangelist-phrasing: intent: Save product videos in bulk effect: write questions: - Can I create or update several product videos at once? - Which call saves a batch of full video records? instructions: - text: Save this batch of video records. - text: Create or update all these videos at once. method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/videos'].delete update: x-apievangelist-phrasing: intent: Delete product videos effect: destructive questions: - Can I remove videos from a product? - What deletes videos by id? instructions: - text: Delete videos {ids}. slots: ids: query.ids - text: Remove the product video {ids}. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/catalog/videos/{id}'].patch update: x-apievangelist-phrasing: intent: Partially update a video effect: write questions: - Can I change a video's sort order with a patch? - Is JSON Patch supported for product videos? instructions: - text: Patch video {id}. slots: id: path.id - text: Apply a partial update to video {id}. slots: id: path.id method: generated generated: '2026-09-26'