Shopify · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Shopify Products API
8 actions
8 updates
phrasing
extends
openapi/shopify-products-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Shopify's API. It is a proposal applied on top of the contract, not a document Shopify publishes.
What the actions change
x-apievangelist-phrasing
Targets 8
$.info
$.paths['/products.json'].get
$.paths['/products.json'].post
$.paths['/products/count.json'].get
$.paths['/products/{product_id}.json'].get
$.paths['/products/{product_id}.json'].put
$.paths['/products/{product_id}.json'].delete
$.paths['/products/{handle}.js'].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 Shopify Products API
version: 1.0.0
extends: openapi/shopify-products-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-24'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 7
- target: $.paths['/products.json'].get
update:
x-apievangelist-phrasing:
intent: List products in the store
effect: read
questions:
- How do I list all the products from a particular vendor in my Shopify store?
- Can I pull only draft or archived products, filtered by status?
- What's the most products I can get back in one page, and how do I page past them?
- Which products were updated after a certain date?
instructions:
- text: List products from vendor {vendor}.
slots:
vendor: query.vendor
- text: Show up to {limit} products in collection {collection_id} with status {status}.
slots:
limit: query.limit
collection_id: query.collection_id
status: query.status
- text: List products of type {product_type} created after {created_at_min}.
slots:
product_type: query.product_type
created_at_min: query.created_at_min
- text: Get the next page of products after ID {since_id}.
slots:
since_id: query.since_id
method: generated
generated: '2026-09-24'
- target: $.paths['/products.json'].post
update:
x-apievangelist-phrasing:
intent: Create a new product
effect: write
questions:
- How do I add a new product to my catalog through the Admin API?
- Can I include variants and images in the same request when creating a product?
- What happens if I create a product without specifying any variants?
instructions:
- text: Create a new product from {product}.
slots:
product: requestBody.product
- text: Add product {product} with its variants and images in one go.
slots:
product: requestBody.product
method: generated
generated: '2026-09-24'
- target: $.paths['/products/count.json'].get
update:
x-apievangelist-phrasing:
intent: Count products matching filters
effect: read
questions:
- How many products do I have in the store in total?
- Can I count just the products in one collection or from one vendor?
- What number of products were added since the start of the month?
instructions:
- text: Count the products from vendor {vendor}.
slots:
vendor: query.vendor
- text: Tell me how many products are in collection {collection_id}.
slots:
collection_id: query.collection_id
- text: Count products of type {product_type} created since {created_at_min}.
slots:
product_type: query.product_type
created_at_min: query.created_at_min
method: generated
generated: '2026-09-24'
- target: $.paths['/products/{product_id}.json'].get
update:
x-apievangelist-phrasing:
intent: Get a product by ID
effect: read
questions:
- How do I look up one product by its ID, with its variants, images and options?
- Can I ask for only a few fields of a single product instead of the whole record?
- Where can I see every variant and option for a specific product ID?
instructions:
- text: Get product {product_id}.
slots:
product_id: path.product_id
- text: Show only {fields} for product {product_id}.
slots:
product_id: path.product_id
fields: query.fields
method: generated
generated: '2026-09-24'
- target: $.paths['/products/{product_id}.json'].put
update:
x-apievangelist-phrasing:
intent: Update an existing product
effect: write
questions:
- How do I change the details of a product that's already in my store?
- Can I update a product's variants and images in the same call as the product itself?
- Is it possible to edit an existing product by its ID through the Admin API?
instructions:
- text: Update product {product_id} with {product}.
slots:
product_id: path.product_id
product: requestBody.product
- text: Apply changes {product} to the existing product {product_id}, including its variants.
slots:
product_id: path.product_id
product: requestBody.product
method: generated
generated: '2026-09-24'
- target: $.paths['/products/{product_id}.json'].delete
update:
x-apievangelist-phrasing:
intent: Delete a product
effect: destructive
questions:
- How do I permanently delete a product from my store?
- Does deleting a product also remove its variants and images?
instructions:
- text: Delete product {product_id}.
slots:
product_id: path.product_id
- text: Remove product {product_id} along with all its variants and images.
slots:
product_id: path.product_id
method: generated
generated: '2026-09-24'
- target: $.paths['/products/{handle}.js'].get
update:
x-apievangelist-phrasing:
intent: Look up a storefront product by its handle
effect: read
questions:
- Can I get a product's details from the storefront using just its URL handle?
- What price and availability does a shopper see for a product, in their own currency?
- Which call returns a product's variants and options when I only know its handle, not its ID?
instructions:
- text: Get the storefront product with handle {handle}.
slots:
handle: path.handle
- text: Check pricing and availability for the product at handle {handle}.
slots:
handle: path.handle
method: generated
generated: '2026-09-24'