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.
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
# 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'