Optimizely · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Optimizely Products API

59 actions 59 updates phrasing extends openapi/optimizely-products-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Optimizely's API. It is a proposal applied on top of the contract, not a document Optimizely publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

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

$.info
$.paths['/api/v1/admin/Products'].get
$.paths['/api/v1/admin/Products'].post
$.paths['/api/v1/admin/Products({id})'].get
$.paths['/api/v1/admin/Products({id})'].put
$.paths['/api/v1/admin/Products({id})'].delete
$.paths['/api/v1/admin/Products({id})'].patch
$.paths['/api/v1/admin/Products/Default.Default()'].get
$.paths['/api/v1/admin/Products/Default.archive'].post
$.paths['/api/v1/admin/Products/Default.isdiscontinued(productId={productId})'].get
$.paths['/api/v1/admin/Products/Default.unitofmeasures(productId={productId})'].get
$.paths['/api/v1/admin/products/isdiscontinued(productId={productId})'].get
$.paths['/api/v1/admin/products/unitofmeasures(productId={productId})'].get
$.paths['/api/v1/admin/products/archive'].delete
$.paths['/api/v1/admin/products/delete'].delete
$.paths['/api/v1/admin/products({key})/attributevalues({attributevalueKey})'].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 Optimizely Products API
  version: 1.0.0
extends: openapi/optimizely-products-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: 58
- target: $.paths['/api/v1/admin/Products'].get
  update:
    x-apievangelist-phrasing:
      intent: List products in the commerce admin
      effect: read
      questions:
      - How do I pull every product record out of the Configured Commerce admin API?
      - Can I filter and sort the admin product list with OData options like $filter and $orderby?
      - Is there a way to page through the admin product catalog with $top and $skip?
      instructions:
      - text: List admin products matching the filter {filter}.
        slots:
          filter: query.$filter
      - text: Show the first {top} admin product records sorted by {orderby}.
        slots:
          top: query.$top
          orderby: query.$orderby
      - text: Count all product records in the commerce admin.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Products'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new product record
      effect: write
      questions:
      - How do I add a brand-new product to the commerce catalog through the admin API?
      - What fields are required when creating a product, like the ERP number and ERP description?
      - Can I set a list price and a sale window when I first create a product?
      instructions:
      - text: Create a product with ERP number {erpNumber} and ERP description {erpDescription}.
        slots:
          erpNumber: requestBody.erpNumber
          erpDescription: requestBody.erpDescription
      - text: Add new product {name} with ERP number {erpNumber}, description {erpDescription} and list price {basicListPrice}.
        slots:
          name: requestBody.name
          erpNumber: requestBody.erpNumber
          erpDescription: requestBody.erpDescription
          basicListPrice: requestBody.basicListPrice
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Products({id})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one product record by id
      effect: read
      questions:
      - How do I look up a single product's full admin record when I have its id?
      - Can I expand related entities when fetching one product by its key?
      instructions:
      - text: Get the admin product record with id {id}.
        slots:
          id: path.id
      - text: Fetch product {id} and expand {expand}.
        slots:
          id: path.id
          expand: query.$expand
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Products({id})'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a product record entirely
      effect: write
      questions:
      - How do I overwrite an entire product record with a new full version?
      - Does replacing a product require sending the ERP number and ERP description again?
      instructions:
      - text: Replace product {id} with a full record using ERP number {erpNumber} and description {erpDescription}.
        slots:
          id: path.id
          erpNumber: requestBody.erpNumber
          erpDescription: requestBody.erpDescription
      - text: Overwrite all fields of product {id}, naming it {name}.
        slots:
          id: path.id
          name: requestBody.name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Products({id})'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a single product record
      effect: destructive
      questions:
      - How do I permanently remove one product from the commerce admin by its id?
      - Can I guard a product deletion with an If-Match ETag so I don't delete a changed record?
      instructions:
      - text: Delete product {id}.
        slots:
          id: path.id
      - text: Delete product {id} only if its ETag still matches {etag}.
        slots:
          id: path.id
          etag: header.If-Match
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Products({id})'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update selected fields on a product
      effect: write
      questions:
      - How do I change just a product's sale price without resending the whole record?
      - Can I mark an existing product as discontinued with a partial update?
      instructions:
      - text: Set the sale price of product {id} to {basicSalePrice}.
        slots:
          id: path.id
          basicSalePrice: requestBody.basicSalePrice
      - text: 'Mark product {id} as discontinued: {isDiscontinued}.'
        slots:
          id: path.id
          isDiscontinued: requestBody.isDiscontinued
      - text: Change the short description of product {id} to {shortDescription}.
        slots:
          id: path.id
          shortDescription: requestBody.shortDescription
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Products/Default.Default()'].get
  update:
    x-apievangelist-phrasing:
      intent: Call the Default function on products
      effect: read
      questions:
      - What does the Default function on the admin Products entity set return?
      - Where do I get the default product record the admin API exposes?
      instructions:
      - text: Call the Default function on the admin Products set.
      - text: Fetch the default product entity from the commerce admin.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Products/Default.archive'].post
  update:
    x-apievangelist-phrasing:
      intent: Archive products via the OData archive action
      effect: destructive
      questions:
      - How do I archive a batch of products using the Default.archive action?
      - Can I archive several products at once by passing their ids in a POST?
      instructions:
      - text: Archive products {ids} using the POST archive action.
        slots:
          ids: query.ids
      - text: Run the Default.archive action for product ids {ids}.
        slots:
          ids: query.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Products/Default.isdiscontinued(productId={productId})'].get
  update:
    x-apievangelist-phrasing:
      intent: Check if a product is discontinued (OData function)
      effect: read
      questions:
      - How do I check through the Default.isdiscontinued OData function whether a product is discontinued?
      - Can the Default-namespace function tell me if a product was discontinued?
      instructions:
      - text: Call Default.isdiscontinued for product {productId}.
        slots:
          productId: path.productId
      - text: Use the OData isdiscontinued function to check product {productId}.
        slots:
          productId: path.productId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Products/Default.unitofmeasures(productId={productId})'].get
  update:
    x-apievangelist-phrasing:
      intent: List a product's units of measure (OData function)
      effect: read
      questions:
      - How do I get the units of measure for a product via the Default.unitofmeasures function?
      - Which OData function returns a product's selling units such as each or case?
      instructions:
      - text: Call Default.unitofmeasures for product {productId}.
        slots:
          productId: path.productId
      - text: Use the OData unitofmeasures function to list units for product {productId}.
        slots:
          productId: path.productId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products/isdiscontinued(productId={productId})'].get
  update:
    x-apievangelist-phrasing:
      intent: Check if a product is discontinued (plain route)
      effect: read
      questions:
      - Is there a plain lowercase products/isdiscontinued route to check a product's discontinued flag?
      - Can I tell whether an item is no longer sold without going through the OData Default namespace?
      instructions:
      - text: Check via the products/isdiscontinued route whether product {productId} is discontinued.
        slots:
          productId: path.productId
      - text: Tell me if product {productId} is discontinued using the non-OData route.
        slots:
          productId: path.productId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products/unitofmeasures(productId={productId})'].get
  update:
    x-apievangelist-phrasing:
      intent: List a product's units of measure (plain route)
      effect: read
      questions:
      - Is there a plain products/unitofmeasures route to list the units a product sells in?
      - Can I read a product's units of measure without calling the OData Default function?
      instructions:
      - text: List units of measure for product {productId} via the products/unitofmeasures route.
        slots:
          productId: path.productId
      - text: Show the non-OData unit list for product {productId}.
        slots:
          productId: path.productId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products/archive'].delete
  update:
    x-apievangelist-phrasing:
      intent: Archive products via the DELETE archive route
      effect: destructive
      questions:
      - Is there a DELETE route that archives products rather than deleting them outright?
      - How do I send a list of product ids to the products/archive endpoint?
      instructions:
      - text: Archive products {ids} through the DELETE products/archive route.
        slots:
          ids: query.ids
      - text: Send product ids {ids} to the archive route to retire them.
        slots:
          ids: query.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products/delete'].delete
  update:
    x-apievangelist-phrasing:
      intent: Bulk delete products by id list
      effect: destructive
      questions:
      - How do I delete many products in one call by passing their ids?
      - Can I remove a whole batch of product records permanently with a single request?
      instructions:
      - text: Bulk delete products {ids}.
        slots:
          ids: query.ids
      - text: Permanently delete every product in the id list {ids}.
        slots:
          ids: query.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/attributevalues({attributevalueKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an attribute value assigned to a product
      effect: read
      questions:
      - Can I read one attribute value, like a color or size, that's assigned to a product?
      - Is a specific attribute value linked to a given product?
      instructions:
      - text: Get attribute value {attributevalueKey} on product {key}.
        slots:
          key: path.key
          attributevalueKey: path.attributevalueKey
      - text: Show product {key}'s assignment of attribute value {attributevalueKey}.
        slots:
          key: path.key
          attributevalueKey: path.attributevalueKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/badges({badgeKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a badge attached to a product
      effect: read
      questions:
      - Where can I see a specific badge, such as 'New' or 'Best Seller', attached to a product?
      - Can I confirm a particular badge is shown on one product?
      instructions:
      - text: Get badge {badgeKey} on product {key}.
        slots:
          key: path.key
          badgeKey: path.badgeKey
      - text: Show the badge {badgeKey} linked to product {key}.
        slots:
          key: path.key
          badgeKey: path.badgeKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/categories({categoryKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a category a product belongs to
      effect: read
      questions:
      - Is a product placed in a particular catalog category?
      - Can I read one category record through a product's categories navigation?
      instructions:
      - text: Get category {categoryKey} of product {key}.
        slots:
          key: path.key
          categoryKey: path.categoryKey
      - text: Show product {key}'s membership in category {categoryKey}.
        slots:
          key: path.key
          categoryKey: path.categoryKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/customerproductsets({customerproductsetKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a customer product set containing a product
      effect: read
      questions:
      - How do I look up a customer product set that includes a given product?
      - Can I read one customer-specific product set through the product it contains?
      instructions:
      - text: Get customer product set {customerproductsetKey} for product {key}.
        slots:
          key: path.key
          customerproductsetKey: path.customerproductsetKey
      - text: Show the customer product set {customerproductsetKey} that product {key} is in.
        slots:
          key: path.key
          customerproductsetKey: path.customerproductsetKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/customervisibilityadditions({customerKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a customer a product is made visible to
      effect: read
      questions:
      - How do I check whether a product was explicitly made visible to a particular customer?
      - Can I read a customer visibility addition from the product side?
      instructions:
      - text: Get the visibility addition for customer {customerKey} on product {key}.
        slots:
          key: path.key
          customerKey: path.customerKey
      - text: Show whether customer {customerKey} was added to see product {key}.
        slots:
          key: path.key
          customerKey: path.customerKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/customervisibilityexceptions({customerKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a customer a product is hidden from
      effect: read
      questions:
      - How do I check if a product has been hidden from a specific customer?
      - Can I read a customer visibility exception that blocks one buyer from a product?
      instructions:
      - text: Get the visibility exception for customer {customerKey} on product {key}.
        slots:
          key: path.key
          customerKey: path.customerKey
      - text: Show whether product {key} is hidden from customer {customerKey}.
        slots:
          key: path.key
          customerKey: path.customerKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/customproperties({custompropertyKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a custom property on a product
      effect: read
      questions:
      - How do I read one custom property value stored on a product?
      - Can I fetch a single extension field that my team added to product records?
      instructions:
      - text: Get custom property {custompropertyKey} of product {key}.
        slots:
          key: path.key
          custompropertyKey: path.custompropertyKey
      - text: Show the value of custom property {custompropertyKey} on product {key}.
        slots:
          key: path.key
          custompropertyKey: path.custompropertyKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/dealers({dealerKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a dealer that carries a product
      effect: read
      questions:
      - Which dealer record is linked to a product under a given dealer key?
      - Can I read one dealer record through the product's dealers list?
      instructions:
      - text: Get dealer {dealerKey} for product {key}.
        slots:
          key: path.key
          dealerKey: path.dealerKey
      - text: Show the dealer {dealerKey} that stocks product {key}.
        slots:
          key: path.key
          dealerKey: path.dealerKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/documents({documentKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a document attached to a product
      effect: read
      questions:
      - Where do I fetch a spec sheet or manual document attached to a product?
      - Can I read one product document record by its key?
      instructions:
      - text: Get document {documentKey} of product {key}.
        slots:
          key: path.key
          documentKey: path.documentKey
      - text: Show the attached document {documentKey} for product {key}.
        slots:
          key: path.key
          documentKey: path.documentKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/parentrelatedcategories({categoryrelatedproductKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a category that lists a product as related
      effect: read
      questions:
      - How do I find a category that points to a product as one of its related products?
      - Can I read a parent category relationship for a product?
      instructions:
      - text: Get parent related category {categoryrelatedproductKey} for product {key}.
        slots:
          key: path.key
          categoryrelatedproductKey: path.categoryrelatedproductKey
      - text: Show the category relation {categoryrelatedproductKey} that references product {key}.
        slots:
          key: path.key
          categoryrelatedproductKey: path.categoryrelatedproductKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/parentrelatedproducts({productrelatedproductKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a product that lists this one as related
      effect: read
      questions:
      - How do I see which other product references this product as a related item?
      - Can I read an inbound product relationship where this item is the child?
      instructions:
      - text: Get parent related product link {productrelatedproductKey} for product {key}.
        slots:
          key: path.key
          productrelatedproductKey: path.productrelatedproductKey
      - text: Show the inbound relation {productrelatedproductKey} pointing at product {key}.
        slots:
          key: path.key
          productrelatedproductKey: path.productrelatedproductKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/productimages({productimageKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an image of a product
      effect: read
      questions:
      - What does the record for one image in a product's gallery contain?
      - Can I fetch a single product image's details by its key?
      instructions:
      - text: Get image {productimageKey} of product {key}.
        slots:
          key: path.key
          productimageKey: path.productimageKey
      - text: Show the gallery image {productimageKey} for product {key}.
        slots:
          key: path.key
          productimageKey: path.productimageKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/productkitsections({productkitsectionKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a kit section of a product
      effect: read
      questions:
      - What's in one section of a configurable product kit?
      - Can I inspect a single kit section that makes up a bundled product?
      instructions:
      - text: Get kit section {productkitsectionKey} of product {key}.
        slots:
          key: path.key
          productkitsectionKey: path.productkitsectionKey
      - text: Show the kit section {productkitsectionKey} inside product {key}.
        slots:
          key: path.key
          productkitsectionKey: path.productkitsectionKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/productrelatedproducts({productrelatedproductKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a related product this product points to
      effect: read
      questions:
      - How do I read one outbound related-product link, like an accessory or cross-sell, on a product?
      - Can I check a specific product-to-product relationship this item defines?
      instructions:
      - text: Get related product link {productrelatedproductKey} defined on product {key}.
        slots:
          key: path.key
          productrelatedproductKey: path.productrelatedproductKey
      - text: Show the outbound related item {productrelatedproductKey} of product {key}.
        slots:
          key: path.key
          productrelatedproductKey: path.productrelatedproductKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/productunitofmeasures({productunitofmeasureKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one unit of measure record on a product
      effect: read
      questions:
      - How do I read one unit-of-measure record, such as a case, through a product's navigation?
      - Can I fetch a specific product unit of measure by its key from the product?
      instructions:
      - text: Get unit of measure record {productunitofmeasureKey} of product {key}.
        slots:
          key: path.key
          productunitofmeasureKey: path.productunitofmeasureKey
      - text: Show the unit record {productunitofmeasureKey} nested under product {key}.
        slots:
          key: path.key
          productunitofmeasureKey: path.productunitofmeasureKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/productwarehouses({productwarehouseKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a product's warehouse record
      effect: read
      questions:
      - What does a product's stocking record for one warehouse look like?
      - Can I check a single warehouse entry for a product?
      instructions:
      - text: Get warehouse record {productwarehouseKey} of product {key}.
        slots:
          key: path.key
          productwarehouseKey: path.productwarehouseKey
      - text: Show the warehouse entry {productwarehouseKey} for product {key}.
        slots:
          key: path.key
          productwarehouseKey: path.productwarehouseKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/promotionresults({promotionresultKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a promotion result tied to a product
      effect: read
      questions:
      - Which promotion result applies to a particular product?
      - Can I read one promotion outcome record through the product?
      instructions:
      - text: Get promotion result {promotionresultKey} for product {key}.
        slots:
          key: path.key
          promotionresultKey: path.promotionresultKey
      - text: Show the promotion outcome {promotionresultKey} on product {key}.
        slots:
          key: path.key
          promotionresultKey: path.promotionresultKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/restrictiongroupadditions({restrictiongroupKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a restriction group addition on a product
      effect: read
      questions:
      - How do I check whether a product was explicitly added to a restriction group?
      - Can I read a restriction group addition record from the product?
      instructions:
      - text: Get restriction group addition {restrictiongroupKey} on product {key}.
        slots:
          key: path.key
          restrictiongroupKey: path.restrictiongroupKey
      - text: Show whether product {key} was added to restriction group {restrictiongroupKey}.
        slots:
          key: path.key
          restrictiongroupKey: path.restrictiongroupKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/restrictiongroupexceptions({restrictiongroupKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a restriction group exception on a product
      effect: read
      questions:
      - How do I check whether a product is exempted from a restriction group?
      - Can I read a restriction group exception that carves a product out?
      instructions:
      - text: Get restriction group exception {restrictiongroupKey} on product {key}.
        slots:
          key: path.key
          restrictiongroupKey: path.restrictiongroupKey
      - text: Show whether product {key} is excepted from restriction group {restrictiongroupKey}.
        slots:
          key: path.key
          restrictiongroupKey: path.restrictiongroupKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/restrictiongroups({restrictiongroupKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a restriction group a product belongs to
      effect: read
      questions:
      - Which restriction group governs who can buy this product?
      - Can I read the restriction group record itself through a product?
      instructions:
      - text: Get restriction group {restrictiongroupKey} assigned to product {key}.
        slots:
          key: path.key
          restrictiongroupKey: path.restrictiongroupKey
      - text: Show the purchase restriction group {restrictiongroupKey} for product {key}.
        slots:
          key: path.key
          restrictiongroupKey: path.restrictiongroupKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/ruleclauses({ruleclauseKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a rule clause applied to a product
      effect: read
      questions:
      - What does one rule clause attached to a product's rules say?
      - Can I inspect a single rule condition defined for a product?
      instructions:
      - text: Get rule clause {ruleclauseKey} of product {key}.
        slots:
          key: path.key
          ruleclauseKey: path.ruleclauseKey
      - text: Show the rule condition {ruleclauseKey} on product {key}.
        slots:
          key: path.key
          ruleclauseKey: path.ruleclauseKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/specifications({specificationKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a specification of a product
      effect: read
      questions:
      - Can I read one specification section, like dimensions or materials, for a product?
      - Where is a single product specification record fetched by key?
      instructions:
      - text: Get specification {specificationKey} of product {key}.
        slots:
          key: path.key
          specificationKey: path.specificationKey
      - text: Show the spec entry {specificationKey} for product {key}.
        slots:
          key: path.key
          specificationKey: path.specificationKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/stylechildren({productKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a style child variant of a product
      effect: read
      questions:
      - How do I read one child variant of a style parent product in the admin API?
      - Can I fetch a specific style child, such as a size or color variant, from its parent?
      instructions:
      - text: Get style child {productKey} of parent product {key}.
        slots:
          key: path.key
          productKey: path.productKey
      - text: Show the admin record of variant {productKey} under style parent {key}.
        slots:
          key: path.key
          productKey: path.productKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/styletraitvalues({styletraitvalueKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a style trait value on a product
      effect: read
      questions:
      - How do I read the style trait value, like 'Red' or 'Large', set on a product?
      - Can I check which style trait value defines a particular variant?
      instructions:
      - text: Get style trait value {styletraitvalueKey} of product {key}.
        slots:
          key: path.key
          styletraitvalueKey: path.styletraitvalueKey
      - text: Show the trait value {styletraitvalueKey} that product {key} carries.
        slots:
          key: path.key
          styletraitvalueKey: path.styletraitvalueKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/subscriptionproducts({subscriptionproductKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a subscription product linked to a product
      effect: read
      questions:
      - Which subscription product record is tied to a product?
      - Can I check a specific recurring-order subscription configuration on an item?
      instructions:
      - text: Get subscription product {subscriptionproductKey} for product {key}.
        slots:
          key: path.key
          subscriptionproductKey: path.subscriptionproductKey
      - text: Show the subscription link {subscriptionproductKey} on product {key}.
        slots:
          key: path.key
          subscriptionproductKey: path.subscriptionproductKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/taxexemptions({taxexemptionKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a tax exemption applied to a product
      effect: read
      questions:
      - How do I check whether a product carries a particular tax exemption?
      - Can I read one tax exemption record through a product?
      instructions:
      - text: Get tax exemption {taxexemptionKey} on product {key}.
        slots:
          key: path.key
          taxexemptionKey: path.taxexemptionKey
      - text: Show the tax exemption {taxexemptionKey} assigned to product {key}.
        slots:
          key: path.key
          taxexemptionKey: path.taxexemptionKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/products({key})/websites({websiteKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a website a product is sold on
      effect: read
      questions:
      - How do I confirm a product is published to one particular storefront website?
      - Can I read a website record through the product's websites list?
      instructions:
      - text: Get website {websiteKey} for product {key}.
        slots:
          key: path.key
          websiteKey: path.websiteKey
      - text: Show the storefront site {websiteKey} that sells product {key}.
        slots:
          key: path.key
          websiteKey: path.websiteKey
      method: generated
      generated: '2026-09-26'


# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/overlays/optimizely-products-api-phrasing-overlay.yaml