Virto Commerce · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for VirtoCommerce. Pricing API

33 actions 33 updates phrasing extends openapi/virto-commerce-pricing-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 33 · first 16 shown; the file carries all of them

$.info
$.paths['/api/pricing/evaluate'].post
$.paths['/api/pricing/pricelists/evaluate'].post
$.paths['/api/pricing/assignments/{id}'].get
$.paths['/api/pricing/assignments/{id}'].patch
$.paths['/api/pricing/assignments/outer/{outerId}'].get
$.paths['/api/pricing/assignments/new'].get
$.paths['/api/pricing/pricelists'].get
$.paths['/api/pricing/pricelists'].put
$.paths['/api/pricing/pricelists'].post
$.paths['/api/pricing/pricelists'].delete
$.paths['/api/pricing/assignments'].get
$.paths['/api/pricing/assignments'].put
$.paths['/api/pricing/assignments'].post
$.paths['/api/pricing/assignments'].delete
$.paths['/api/catalog/products/prices/search'].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. Pricing API
  version: 1.0.0
extends: openapi/virto-commerce-pricing-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: 32
- target: $.paths['/api/pricing/evaluate'].post
  update:
    x-apievangelist-phrasing:
      intent: Evaluate product prices for a shopping context
      effect: read
      questions:
      - What price would a specific customer pay for these products in my store?
      - Can price evaluation take quantity, currency and the shopper's location into account?
      instructions:
      - text: Evaluate prices for products {productIds} in store {storeId}.
        slots:
          productIds: requestBody.productIds
          storeId: requestBody.storeId
      - text: Work out the price of {productIds} for customer {customerId} at quantity {quantity} in {currency}.
        slots:
          productIds: requestBody.productIds
          customerId: requestBody.customerId
          quantity: requestBody.quantity
          currency: requestBody.currency
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelists/evaluate'].post
  update:
    x-apievangelist-phrasing:
      intent: Evaluate which price lists apply to a context
      effect: read
      questions:
      - Which price lists apply to a given store, customer and currency right now?
      - Can I find out which price lists would be used for a shopper on a certain date?
      instructions:
      - text: Evaluate which price lists apply in store {storeId} for currency {currency}.
        slots:
          storeId: requestBody.storeId
          currency: requestBody.currency
      - text: Tell me the price lists that apply to customer {customerId} on {date}.
        slots:
          customerId: requestBody.customerId
          date: requestBody.certainDate
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/assignments/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a price list assignment
      effect: read
      questions:
      - Which catalog or store is a given price list assignment tied to?
      - How do I view the conditions and dates on one price list assignment?
      instructions:
      - text: Show price list assignment {id}.
        slots:
          id: path.id
      - text: Get the start and end dates for price list assignment {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/assignments/{id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Partially update a price list assignment
      effect: write
      questions:
      - Can I change only the priority of a price list assignment?
      - Is there a JSON Patch option for editing price list assignments?
      instructions:
      - text: Patch price list assignment {id} with only the changed fields.
        slots:
          id: path.id
      - text: Apply a partial update to assignment {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/assignments/outer/{outerId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a price list assignment by external id
      effect: read
      questions:
      - How can I find a price list assignment using my ERP's key?
      - Can I look up an assignment by outer id instead of its internal id?
      instructions:
      - text: Get the price list assignment with outer id {outerId}.
        slots:
          outerId: path.outerId
      - text: Look up assignment by integration key {outerId}.
        slots:
          outerId: path.outerId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/assignments/new'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a blank price list assignment template
      effect: read
      questions:
      - What does an empty price list assignment object look like before I save it?
      - Can I get a new assignment template without creating anything?
      instructions:
      - text: Give me a new unsaved price list assignment template.
      - text: Fetch a blank assignment object to fill in.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelists'].get
  update:
    x-apievangelist-phrasing:
      intent: Search price lists
      effect: read
      questions:
      - Which price lists do I have across all catalogs?
      - Can I list only the price lists in a particular currency?
      instructions:
      - text: List price lists in currency {currencies}.
        slots:
          currencies: query.Currencies
      - text: Search price lists matching {keyword}.
        slots:
          keyword: query.Keyword
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelists'].put
  update:
    x-apievangelist-phrasing:
      intent: Update a price list
      effect: write
      questions:
      - How do I change the priority or currency of an existing price list?
      - Can I replace a whole price list's details and prices in one request?
      instructions:
      - text: Update price list {id} to priority {priority}.
        slots:
          id: requestBody.id
          priority: requestBody.priority
      - text: Rename existing price list {id} to {name}.
        slots:
          id: requestBody.id
          name: requestBody.name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelists'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a price list
      effect: write
      questions:
      - How do I set up a new price list for a currency?
      - Can a new price list be created with its prices and assignments included?
      instructions:
      - text: Create a price list called {name} in {currency}.
        slots:
          name: requestBody.name
          currency: requestBody.currency
      - text: Add a new price list {name} with priority {priority}.
        slots:
          name: requestBody.name
          priority: requestBody.priority
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelists'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete price lists
      effect: destructive
      questions:
      - Can I delete several price lists in one go?
      - What is needed to remove a price list permanently?
      instructions:
      - text: Delete price lists {ids}.
        slots:
          ids: query.ids
      - text: Remove the price list {ids}.
        slots:
          ids: query.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/assignments'].get
  update:
    x-apievangelist-phrasing:
      intent: Search price list assignments
      effect: read
      questions:
      - Which stores and catalogs is a given price list assigned to?
      - Can I list all price list assignments for one store?
      instructions:
      - text: Find assignments for price list {priceListId}.
        slots:
          priceListId: query.PriceListId
      - text: List price list assignments in stores {storeIds}.
        slots:
          storeIds: query.StoreIds
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/assignments'].put
  update:
    x-apievangelist-phrasing:
      intent: Update a price list assignment
      effect: write
      questions:
      - How do I change the dates on an existing price list assignment?
      - Can I move an assignment to a different store?
      instructions:
      - text: Update assignment {id} to run from {start} to {end}.
        slots:
          id: requestBody.id
          start: requestBody.startDate
          end: requestBody.endDate
      - text: Move existing assignment {id} to store {storeId}.
        slots:
          id: requestBody.id
          storeId: requestBody.storeId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/assignments'].post
  update:
    x-apievangelist-phrasing:
      intent: Assign a price list to a store or catalog
      effect: write
      questions:
      - How do I make a price list apply in a specific store?
      - Can I schedule a price list to apply only between two dates?
      instructions:
      - text: Assign price list {pricelistId} to store {storeId}.
        slots:
          pricelistId: requestBody.pricelistId
          storeId: requestBody.storeId
      - text: Create an assignment of price list {pricelistId} to catalog {catalogId} starting {start}.
        slots:
          pricelistId: requestBody.pricelistId
          catalogId: requestBody.catalogId
          start: requestBody.startDate
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/assignments'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete price list assignments by id
      effect: destructive
      questions:
      - Can I remove specific price list assignments when I know their ids?
      - What stops a price list from applying to a store I assigned it to?
      instructions:
      - text: Delete price list assignments {ids}.
        slots:
          ids: query.ids
      - text: Remove assignment {ids} by its id.
        slots:
          ids: query.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/catalog/products/prices/search'].get
  update:
    x-apievangelist-phrasing:
      intent: Search product prices with query parameters
      effect: read
      questions:
      - What prices does a product have across my price lists?
      - Can I find prices modified since a date using a simple GET with query parameters?
      instructions:
      - text: Search prices for product {productId} using the GET query form.
        slots:
          productId: query.ProductId
      - text: List prices in price list {priceListId} changed since {since} via query string.
        slots:
          priceListId: query.PriceListId
          since: query.ModifiedSince
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/catalog/products/prices/search'].post
  update:
    x-apievangelist-phrasing:
      intent: Search product prices with a request body
      effect: read
      questions:
      - Can I search prices for many products at once by posting the criteria?
      - Is there a way to group price search results by product?
      instructions:
      - text: Post a price search for products {productIds} grouped by product.
        slots:
          productIds: requestBody.productIds
      - text: Search prices in price lists {priceListIds} using a request body.
        slots:
          priceListIds: requestBody.priceListIds
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/products/{productId}/prices'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a product's valid prices per currency
      effect: read
      questions:
      - What is a product's current price in each currency?
      - Which prices are valid for one product right now?
      instructions:
      - text: Show the valid prices for product {productId} in every currency.
        slots:
          productId: path.productId
      - text: Evaluate current prices of product {productId}.
        slots:
          productId: path.productId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/products/{productId}/prices'].put
  update:
    x-apievangelist-phrasing:
      intent: Update one product's prices
      effect: write
      questions:
      - How do I replace the prices for a single product?
      - Can I set a product's list and sale prices in one call?
      instructions:
      - text: Update the prices of product {productId} to {prices}.
        slots:
          productId: path.productId
          prices: requestBody.prices
      - text: Set new prices on product {productId}.
        slots:
          productId: path.productId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/products/{productId}/{catalogId}/pricesWidget'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a product's prices within a catalog
      effect: read
      questions:
      - What prices does a product have in a specific virtual catalog?
      - Can I evaluate a product's prices for the price widget of one catalog?
      instructions:
      - text: Show prices for product {productId} in catalog {catalogId}.
        slots:
          productId: path.productId
          catalogId: path.catalogId
      - text: Evaluate the catalog-specific prices of {productId} for catalog {catalogId}.
        slots:
          productId: path.productId
          catalogId: path.catalogId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/products/prices'].put
  update:
    x-apievangelist-phrasing:
      intent: Update prices for many products
      effect: write
      questions:
      - Can I bulk update prices for several products in one request?
      - Which call lets me push a whole batch of product prices?
      instructions:
      - text: Bulk update prices for multiple products.
      - text: Save this batch of product prices across several products.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/catalog/products/{productId}/pricelists'].get
  update:
    x-apievangelist-phrasing:
      intent: List price lists containing a product
      effect: read
      questions:
      - Which price lists include a given product?
      - In how many price lists does this product appear?
      instructions:
      - text: List all price lists for product {productId}.
        slots:
          productId: path.productId
      - text: Show which price lists product {productId} belongs to.
        slots:
          productId: path.productId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelists/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a price list with its assignments
      effect: read
      questions:
      - What prices and assignments are in a specific price list?
      - How do I load a full price list by its id?
      instructions:
      - text: Get price list {id} with its assignments.
        slots:
          id: path.id
      - text: Show the full details of price list {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelists/{id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Partially update a price list
      effect: write
      questions:
      - Can I patch a single field on a price list, like its description?
      - Is JSON Patch supported for price lists?
      instructions:
      - text: Patch price list {id} with just the changed fields.
        slots:
          id: path.id
      - text: Apply a partial update to price list {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelists/outer/{outerId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a price list by external id
      effect: read
      questions:
      - How do I find a price list from my ERP's integration key?
      - Can I fetch a full price list by outer id?
      instructions:
      - text: Fetch the full price list whose ERP key is {outerId}.
        slots:
          outerId: path.outerId
      - text: Look up the full price list for integration key {outerId}.
        slots:
          outerId: path.outerId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelistsshort/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a price list without its assignments
      effect: read
      questions:
      - Can I load a price list quickly without pulling all its assignments?
      - Is there a lightweight view of a price list by id?
      instructions:
      - text: Get price list {id} in short mode without assignments.
        slots:
          id: path.id
      - text: Show the lightweight version of price list {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelistsshort/outer/{outerId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a short price list by external id
      effect: read
      questions:
      - Can I get a price list by outer id but skip its assignments?
      - What is the lightest way to look up a price list from my ERP key?
      instructions:
      - text: Get the short price list for outer id {outerId}.
        slots:
          outerId: path.outerId
      - text: Fetch price list {outerId} by integration key without assignments.
        slots:
          outerId: path.outerId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/filteredAssignments'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete price list assignments matching criteria
      effect: destructive
      questions:
      - Can I delete every assignment of a price list without listing their ids?
      - Is there a way to remove all price list assignments for certain stores?
      instructions:
      - text: Delete all assignments of price list {priceListId}.
        slots:
          priceListId: query.PriceListId
      - text: Remove every price list assignment for stores {storeIds}.
        slots:
          storeIds: query.StoreIds
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/pricelists/{pricelistId}/products/prices'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a product's prices from a price list
      effect: destructive
      questions:
      - How do I remove all prices for certain products from one price list?
      - Can I clear a product out of a price list entirely?
      instructions:
      - text: Delete all prices for products {productIds} in price list {pricelistId}.
        slots:
          productIds: query.productIds
          pricelistId: path.pricelistId
      - text: Clear every product price from price list {pricelistId}.
        slots:
          pricelistId: path.pricelistId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/products/prices'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete prices by price id
      effect: destructive
      questions:
      - Can I delete individual price records when I know their ids?
      - What removes one specific price entry?
      instructions:
      - text: Delete price records {priceIds}.
        slots:
          priceIds: query.priceIds
      - text: Remove the single price entry {priceIds}.
        slots:
          priceIds: query.priceIds
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/mergedpricegroups'].post
  update:
    x-apievangelist-phrasing:
      intent: Merge base and priority price lists by product
      effect: read
      questions:
      - Which products end up with which price when a priority list overrides a base list?
      - Can I see merged price groups per product for two price lists?
      instructions:
      - text: Merge base price list {base} with priority list {priority} and group by product.
        slots:
          base: requestBody.basePriceListId
          priority: requestBody.priorityPriceListId
      - text: Show merged price groups for products {productIds}.
        slots:
          productIds: requestBody.productIds
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/pricing/mergedprices'].post
  update:
    x-apievangelist-phrasing:
      intent: Get merged prices from base and priority lists
      effect: read
      questions:
      - What are the individual merged prices after combining a base and a priority price list?
      - Can I list each resulting price when one list overrides another?
      instructions:
      - text: List the merged prices of base list {base} overridden by {priority}.
        slots:
          base: requestBody.basePriceListId
          priority: requestBody.priorityPriceListId
      - text: Get individual merged price rows for products {productIds}.
        slots:
          productIds: requestBody.productIds
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/products/prices/{id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Partially update a product price
      effect: write
      questions:
      - Can I change just the sale price on one price record?
      - Is a single product price editable with JSON Patch?
      instructions:
      - text: Patch product price {id} with the changed fields.
        slots:
          id: path.id
      - text: Apply a partial update to price record {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'