SendPulse · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for SendPulse CRM Public ECommerce Product API
20 actions
20 updates
phrasing
extends
openapi/sendpulse-ecommerce-product-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for SendPulse's API. It is a proposal applied on top of the contract, not a document SendPulse publishes.
What the actions change
x-apievangelist-phrasing
Targets 20 · first 16 shown; the file carries all of them
$.info
$.paths['/products/all'].post
$.paths['/products/categories/{categoryId}/{productId}'].get
$.paths['/products/deals'].post
$.paths['/products/deals/{dealId}'].get
$.paths['/products/deals/{headId}'].put
$.paths['/products/contacts/{contactId}/deals'].get
$.paths['/products/categories/{categoryId}/{productId}/deals/{headId}'].delete
$.paths['/products/{productId}'].get
$.paths['/products/{productId}'].put
$.paths['/products/{productId}'].delete
$.paths['/products/categories/{categoryId}'].put
$.paths['/products/categories/{categoryId}'].delete
$.paths['/products/categories'].get
$.paths['/products/categories'].post
$.paths['/products/{productId}/prices'].put
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 SendPulse CRM Public ECommerce Product API
version: 1.0.0
extends: openapi/sendpulse-ecommerce-product-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-10-01'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 19
- target: $.paths['/products/all'].post
update:
x-apievangelist-phrasing:
intent: Search the product catalog with filters
effect: read
questions:
- Can I find products in my catalog by category and price range?
- Which of my products are hidden or out of stock?
- Is there a way to search products by name and sort the results?
instructions:
- text: Search my products for {search}.
slots:
search: requestBody.search
- text: Filter catalog products in category {categoryId}, {limit} at a time.
slots:
categoryId: requestBody.categoryId
limit: requestBody.limit
method: generated
generated: '2026-10-01'
- target: $.paths['/products/categories/{categoryId}/{productId}'].get
update:
x-apievangelist-phrasing:
intent: Get a product within a specific category
effect: read
questions:
- Can I look up a product through the category it belongs to?
- What details come back for a product when I fetch it by category and product ID?
instructions:
- text: Get product {productId} from category {categoryId}.
slots:
productId: path.productId
categoryId: path.categoryId
- text: Show me item {productId} as listed under category {categoryId}.
slots:
productId: path.productId
categoryId: path.categoryId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/deals'].post
update:
x-apievangelist-phrasing:
intent: Add a product to a CRM deal
effect: write
questions:
- How do I attach a product from my catalog to a sales deal?
- Can I set the quantity and price when adding a product to a deal?
- Is it possible to add a product to a deal even when it is out of stock?
instructions:
- text: Add product {productId} to deal {dealId}.
slots:
productId: requestBody.productId
dealId: requestBody.dealId
- text: Put {quantity} units of product {productId} on deal {dealId}.
slots:
quantity: requestBody.quantity
productId: requestBody.productId
dealId: requestBody.dealId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/deals/{dealId}'].get
update:
x-apievangelist-phrasing:
intent: List the products on a deal
effect: read
questions:
- Which products are attached to a particular deal?
- Can I see everything a customer is buying in one deal?
instructions:
- text: List the products on deal {dealId}.
slots:
dealId: path.dealId
- text: Show what was added to deal {dealId}.
slots:
dealId: path.dealId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/deals/{headId}'].put
update:
x-apievangelist-phrasing:
intent: Change quantity or amount of a deal product
effect: write
questions:
- Can I change how many units of a product are in a deal?
- What if I need to adjust the amount of a product line already on a deal?
instructions:
- text: Set the quantity of deal product line {headId} to {quantity}.
slots:
headId: path.headId
quantity: requestBody.quantity
- text: Change the amount on deal product line {headId} to {amount}.
slots:
headId: path.headId
amount: requestBody.amount
method: generated
generated: '2026-10-01'
- target: $.paths['/products/contacts/{contactId}/deals'].get
update:
x-apievangelist-phrasing:
intent: List products across a contact's deals
effect: read
questions:
- What products has a given contact got across all of their deals?
- Can I see every product tied to one contact's deals at once?
instructions:
- text: List the products in all deals for contact {contactId}.
slots:
contactId: path.contactId
- text: Show what contact {contactId} has bought through deals.
slots:
contactId: path.contactId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/categories/{categoryId}/{productId}/deals/{headId}'].delete
update:
x-apievangelist-phrasing:
intent: Remove a product from a deal
effect: destructive
questions:
- How do I take a product off a deal?
- Can I detach one product line from a deal without deleting the product?
instructions:
- text: Detach product {productId} in category {categoryId} from deal line {headId}.
slots:
productId: path.productId
categoryId: path.categoryId
headId: path.headId
- text: Remove deal product line {headId} for item {productId} of category {categoryId}.
slots:
headId: path.headId
productId: path.productId
categoryId: path.categoryId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/{productId}'].get
update:
x-apievangelist-phrasing:
intent: Get a product by its ID
effect: read
questions:
- Can I fetch a single product just by its ID?
- What information is stored for one product in my catalog?
instructions:
- text: Get product {productId}.
slots:
productId: path.productId
- text: Show me the full details of product {productId}.
slots:
productId: path.productId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/{productId}'].put
update:
x-apievangelist-phrasing:
intent: Edit a product's details
effect: write
questions:
- How do I change a product's name, description or images?
- Can I update the stock balance or visibility of an existing product?
- Is it possible to edit a product's SEO settings?
instructions:
- text: Rename product {productId} to {name}.
slots:
productId: path.productId
name: requestBody.name
- text: Set the stock balance of product {productId} to {balance}.
slots:
productId: path.productId
balance: requestBody.balance
method: generated
generated: '2026-10-01'
- target: $.paths['/products/{productId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a product from the catalog
effect: destructive
questions:
- Can I permanently remove a product from my store catalog?
- What happens when I delete a product by its ID?
instructions:
- text: Delete product {productId}.
slots:
productId: path.productId
- text: Remove product {productId} from my catalog.
slots:
productId: path.productId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/categories/{categoryId}'].put
update:
x-apievangelist-phrasing:
intent: Rename or move a product category
effect: write
questions:
- Can I rename a product category?
- Is it possible to move a category under a different parent category?
instructions:
- text: Rename product category {categoryId} to {name}.
slots:
categoryId: path.categoryId
name: requestBody.name
- text: Move category {categoryId} under parent category {parentId}.
slots:
categoryId: path.categoryId
parentId: requestBody.parentId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/categories/{categoryId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a product category
effect: destructive
questions:
- How do I delete a product category I no longer use?
- Can I remove a category from my catalog structure?
instructions:
- text: Delete product category {categoryId}.
slots:
categoryId: path.categoryId
- text: Remove the catalog category {categoryId}.
slots:
categoryId: path.categoryId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/categories'].get
update:
x-apievangelist-phrasing:
intent: List product categories
effect: read
questions:
- What product categories have I set up?
- Can I see the category tree of my catalog?
instructions:
- text: List all my product categories.
- text: Show the categories in my product catalog.
method: generated
generated: '2026-10-01'
- target: $.paths['/products/categories'].post
update:
x-apievangelist-phrasing:
intent: Create a product category
effect: write
questions:
- Can I add a new category to organize my products?
- Is it possible to create a subcategory under an existing category?
instructions:
- text: Create a product category called {name}.
slots:
name: requestBody.name
- text: Add category {name} under parent category {parentId}.
slots:
name: requestBody.name
parentId: requestBody.parentId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/{productId}/prices'].put
update:
x-apievangelist-phrasing:
intent: Update a product's prices
effect: write
questions:
- How do I change the price of a product?
- Can I set new prices on a product without editing its other details?
instructions:
- text: Update the prices of product {productId} to {prices}.
slots:
productId: path.productId
prices: requestBody.prices
- text: Change product {productId} pricing.
slots:
productId: path.productId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/{productId}/sections'].put
update:
x-apievangelist-phrasing:
intent: Replace sections on a product (PUT)
effect: write
questions:
- Can I replace the sections assigned to a product using a PUT request?
- Is there a PUT endpoint that overwrites a product's section list?
instructions:
- text: Replace the sections on product {productId} with {sections} via PUT.
slots:
productId: path.productId
sections: requestBody.sections
- text: Use the PUT sections endpoint to update product {productId}.
slots:
productId: path.productId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/{productId}/sections'].post
update:
x-apievangelist-phrasing:
intent: Update sections on a product (POST)
effect: write
questions:
- Can I update a product's sections with a POST request?
- Which endpoint posts new section data to a product?
instructions:
- text: Post sections {sections} to product {productId}.
slots:
sections: requestBody.sections
productId: path.productId
- text: Use the POST sections endpoint for product {productId}.
slots:
productId: path.productId
method: generated
generated: '2026-10-01'
- target: $.paths['/products/{productId}/sections/{sectionId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a section from a product
effect: destructive
questions:
- Can I remove one section from a product?
- How do I delete a single product section by its ID?
instructions:
- text: Delete section {sectionId} from product {productId}.
slots:
sectionId: path.sectionId
productId: path.productId
- text: Remove section {sectionId} on product {productId}.
slots:
sectionId: path.sectionId
productId: path.productId
method: generated
generated: '2026-10-01'
- target: $.paths['/products'].post
update:
x-apievangelist-phrasing:
intent: Create a new product
effect: write
questions:
- How do I add a new product to my catalog?
- Can I create a digital product with its prices and images in one call?
- What fields can I set when creating a product, like vendor code or stock balance?
instructions:
- text: Create a product named {name}.
slots:
name: requestBody.name
- text: Add product {name} with vendor code {vendorCode} in category {categoryId}.
slots:
name: requestBody.name
vendorCode: requestBody.vendorCode
categoryId: requestBody.categoryId
method: generated
generated: '2026-10-01'