Virto Commerce · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for VirtoCommerce. Catalog API

93 actions 93 updates phrasing extends openapi/virto-commerce-catalog-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Virto Commerce's API. It is a proposal applied on top of the contract, not a document Virto Commerce publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 93 · first 16 shown; the file carries all of them

$.info
$.paths['/api/catalog/automatic-link-queries/search'].post
$.paths['/api/catalog/automatic-link-queries'].put
$.paths['/api/catalog/automatic-link-queries'].post
$.paths['/api/catalog/automatic-link-queries'].delete
$.paths['/api/catalog/automatic-link-queries/{id}'].get
$.paths['/api/catalog/products/associations/{productId}'].get
$.paths['/api/catalog/products/associations/get/multiple'].post
$.paths['/api/catalog/products/associations'].post
$.paths['/api/catalog/products/associations'].delete
$.paths['/api/catalog/products/associations/search'].post
$.paths['/api/catalog/products/associations/{id}'].patch
$.paths['/api/brand-settings/store/{storeId}'].get
$.paths['/api/brand-settings'].put
$.paths['/api/catalog/catalogs/search'].post
$.paths['/api/catalog/catalogs/{id}'].get

OpenAPI Overlay

Raw ↑
# 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'


# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/virto-commerce/refs/heads/main/overlays/virto-commerce-catalog-api-phrasing-overlay.yaml