Optimizely · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Optimizely Brands API

28 actions 28 updates phrasing extends openapi/optimizely-brands-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 28 · first 16 shown; the file carries all of them

$.info
$.paths['/api/v1/admin/Brands'].get
$.paths['/api/v1/admin/Brands'].post
$.paths['/api/v1/admin/Brands({id})'].get
$.paths['/api/v1/admin/Brands({id})'].put
$.paths['/api/v1/admin/Brands({id})'].delete
$.paths['/api/v1/admin/Brands({id})'].patch
$.paths['/api/v1/admin/Brands/Default.Default()'].get
$.paths['/api/v1/admin/Brands/Default.checkbrandspage(websiteId={websiteId})'].get
$.paths['/api/v1/admin/Brands({id})/Default.unassignProductLinesProducts'].post
$.paths['/api/v1/admin/brands({key})/unassignProductLinesProducts'].post
$.paths['/api/v1/admin/brands/checkbrandspage(websiteId={websiteId})'].get
$.paths['/api/v1/admin/brands/delete'].delete
$.paths['/api/v1/admin/brands({key})/brandcategoryimages({brandcategoryimageKey})'].get
$.paths['/api/v1/admin/brands({key})/customproperties({custompropertyKey})'].get
$.paths['/api/v1/admin/brands({key})/productlines({productlineKey})'].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 Brands API
  version: 1.0.0
extends: openapi/optimizely-brands-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: 27
- target: $.paths['/api/v1/admin/Brands'].get
  update:
    x-apievangelist-phrasing:
      intent: List brands in the commerce admin
      effect: read
      questions:
      - How do I pull every brand record from the Optimizely Configured Commerce admin API?
      - Can I filter and sort the admin brand list, or page through it with top and skip?
      instructions:
      - text: List all brands in the admin console.
      - text: List admin brands matching the filter {filter}, sorted by {orderby}.
        slots:
          filter: query.$filter
          orderby: query.$orderby
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Brands'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new brand
      effect: write
      questions:
      - What fields do I need to set up a new brand, like logos, URL segment and SEO title?
      - Can I mark a newly created brand as sponsored and give it a search boost?
      instructions:
      - text: Create a brand named {name} with site URL {siteUrl} and URL segment {urlSegment}.
        slots:
          name: requestBody.name
          siteUrl: requestBody.siteUrl
          urlSegment: requestBody.urlSegment
      - text: Add a new brand {name} made by manufacturer {manufacturer} with page title {pageTitle}.
        slots:
          name: requestBody.name
          manufacturer: requestBody.manufacturer
          pageTitle: requestBody.pageTitle
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Brands({id})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one brand's admin record
      effect: read
      questions:
      - How can I look up a single brand's admin record by its ID?
      - Which related data can I expand when fetching one brand record from admin?
      instructions:
      - text: Show me the admin record for brand {id}.
        slots:
          id: path.id
      - text: Fetch admin brand {id} with {expand} expanded.
        slots:
          id: path.id
          expand: query.$expand
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Brands({id})'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a brand record entirely
      effect: write
      questions:
      - Can I overwrite an existing brand with a complete new set of values?
      - What happens to brand fields I leave out when I replace the whole record?
      instructions:
      - text: Replace brand {id} with a full record named {name} at site URL {siteUrl}.
        slots:
          id: path.id
          name: requestBody.name
          siteUrl: requestBody.siteUrl
      - text: Overwrite every field of brand {id}, setting the meta description to {metaDescription}.
        slots:
          id: path.id
          metaDescription: requestBody.metaDescription
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Brands({id})'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a single brand
      effect: destructive
      questions:
      - How do I remove one brand from the catalog by its ID?
      - Can I make a brand delete conditional on an ETag so I don't remove a changed record?
      instructions:
      - text: Delete brand {id}.
        slots:
          id: path.id
      - text: Delete brand {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/Brands({id})'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update selected fields on a brand
      effect: write
      questions:
      - Can I change just a brand's sort order or logo alt text without resending everything?
      - How would I switch off the sponsored flag on an existing brand?
      instructions:
      - text: Patch brand {id} so its sort order is {sortOrder}.
        slots:
          id: path.id
          sortOrder: requestBody.sortOrder
      - text: Update brand {id} to set sponsored to {isSponsored} and search boost to {searchBoost}.
        slots:
          id: path.id
          isSponsored: requestBody.isSponsored
          searchBoost: requestBody.searchBoost
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Brands/Default.Default()'].get
  update:
    x-apievangelist-phrasing:
      intent: Get default values for a new brand
      effect: read
      questions:
      - What default values does the admin API pre-fill for a brand before I create one?
      - Is there a blank brand template I can start from?
      instructions:
      - text: Get the default brand template from the admin API.
      - text: Show the pre-filled default values for a new brand.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Brands/Default.checkbrandspage(websiteId={websiteId})'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a website's brands page (OData function)
      effect: read
      questions:
      - How can I check whether a website has a brands page using the OData Default.checkbrandspage function?
      - Does the Default namespace checkbrandspage call tell me if a site's brand listing page exists?
      instructions:
      - text: Run the OData Default.checkbrandspage function for website {websiteId}.
        slots:
          websiteId: path.websiteId
      - text: Call the namespaced checkbrandspage operation to verify the brands page on site {websiteId}.
        slots:
          websiteId: path.websiteId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Brands({id})/Default.unassignProductLinesProducts'].post
  update:
    x-apievangelist-phrasing:
      intent: Unassign chosen products from a brand's lines
      effect: write
      questions:
      - How do I detach specific products from a brand's product lines by passing their IDs?
      - Can I pick which products to unassign from a brand's product lines instead of all of them?
      instructions:
      - text: Unassign products {productIds} from the product lines of brand {id}.
        slots:
          productIds: requestBody.productIds
          id: path.id
      - text: Through the Default action, remove products {productIds} from brand {id}'s product lines.
        slots:
          productIds: requestBody.productIds
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/brands({key})/unassignProductLinesProducts'].post
  update:
    x-apievangelist-phrasing:
      intent: Unassign product-line products by brand key
      effect: write
      questions:
      - Is there a lowercase brands route that unassigns product-line products using just the brand key?
      - Can I call unassignProductLinesProducts with no product list in the body?
      instructions:
      - text: Call the brands({key}) unassignProductLinesProducts route with no request body.
        slots:
          key: path.key
      - text: Clear product-line product assignments for brand key {key} via the plain route.
        slots:
          key: path.key
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/brands/checkbrandspage(websiteId={websiteId})'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a website's brands page (plain route)
      effect: read
      questions:
      - Is there a plain lowercase brands/checkbrandspage route to verify a website's brands page?
      - Can I check a site's brands page without the Default OData namespace in the URL?
      instructions:
      - text: Hit the plain brands/checkbrandspage route for website {websiteId}.
        slots:
          websiteId: path.websiteId
      - text: Use the non-namespaced route to check whether site {websiteId} has a brands page.
        slots:
          websiteId: path.websiteId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/brands/delete'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete several brands at once
      effect: destructive
      questions:
      - Can I bulk delete a batch of brands in a single call?
      - How do I pass a list of brand IDs to remove them together?
      instructions:
      - text: Bulk delete the brands with IDs {ids}.
        slots:
          ids: query.ids
      - text: Remove every brand in the list {ids} in one request.
        slots:
          ids: query.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/brands({key})/brandcategoryimages({brandcategoryimageKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a brand's category image
      effect: read
      questions:
      - How do I fetch one category image attached to a brand?
      - Where can I read the image a brand uses for a specific category tile?
      instructions:
      - text: Get brand category image {brandcategoryimageKey} for brand {key}.
        slots:
          brandcategoryimageKey: path.brandcategoryimageKey
          key: path.key
      - text: Show the category image record {brandcategoryimageKey} under brand {key}.
        slots:
          brandcategoryimageKey: path.brandcategoryimageKey
          key: path.key
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/brands({key})/customproperties({custompropertyKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a custom property on a brand
      effect: read
      questions:
      - Can I read a single custom property value stored on a brand?
      - Which custom attributes has my team attached to a given brand record?
      instructions:
      - text: Get custom property {custompropertyKey} on brand {key}.
        slots:
          custompropertyKey: path.custompropertyKey
          key: path.key
      - text: Show brand {key}'s custom property {custompropertyKey}.
        slots:
          key: path.key
          custompropertyKey: path.custompropertyKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/brands({key})/productlines({productlineKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a brand's product line in admin
      effect: read
      questions:
      - How do I read one product line record under a brand in the admin API?
      - Can I select only certain fields of a brand's product line from admin?
      instructions:
      - text: Get admin product line {productlineKey} of brand {key}.
        slots:
          productlineKey: path.productlineKey
          key: path.key
      - text: Fetch the admin record for brand {key}'s product line {productlineKey}, selecting {select}.
        slots:
          key: path.key
          productlineKey: path.productlineKey
          select: query.$select
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/brands({key})/products({productKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a product linked to a brand in admin
      effect: read
      questions:
      - Can I confirm a particular product is linked to a brand through the admin API?
      - How do I open the admin record of one product under a brand?
      instructions:
      - text: Get admin product {productKey} under brand {key}.
        slots:
          productKey: path.productKey
          key: path.key
      - text: Look up product {productKey} in brand {key}'s admin product collection.
        slots:
          productKey: path.productKey
          key: path.key
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands/{BrandId}/categories'].get
  update:
    x-apievangelist-phrasing:
      intent: List the storefront categories of a brand
      effect: read
      questions:
      - Which categories does a brand's products appear in on the storefront?
      - Can I limit how deep the brand category tree goes when listing it?
      instructions:
      - text: List the storefront categories for brand {BrandId}.
        slots:
          BrandId: path.BrandId
      - text: Show brand {BrandId}'s category tree down to depth {maximumDepth}.
        slots:
          BrandId: path.BrandId
          maximumDepth: query.parameter.maximumDepth
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands/{BrandId}/categories/{CategoryId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one category within a brand
      effect: read
      questions:
      - How do I get the details of a single category as it appears under a brand on the storefront?
      - Can I expand extra data on one brand category?
      instructions:
      - text: Get category {CategoryId} for brand {BrandId}.
        slots:
          CategoryId: path.CategoryId
          BrandId: path.BrandId
      - text: Show brand {BrandId}'s category {CategoryId} with {expand} expanded.
        slots:
          BrandId: path.BrandId
          CategoryId: path.CategoryId
          expand: query.parameter.expand
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands/{BrandId}/productlines/{ProductLineId}/products'].get
  update:
    x-apievangelist-phrasing:
      intent: List products in a brand's product line
      effect: read
      questions:
      - What products belong to a specific product line of a brand?
      - Can I filter a brand product line's products by price range or stocked items only?
      instructions:
      - text: List products in product line {ProductLineId} of brand {BrandId}.
        slots:
          ProductLineId: path.ProductLineId
          BrandId: path.BrandId
      - text: Show brand {BrandId} product line {ProductLineId} products priced between {minimumPrice} and {maximumPrice}.
        slots:
          BrandId: path.BrandId
          ProductLineId: path.ProductLineId
          minimumPrice: query.parameter.minimumPrice
          maximumPrice: query.parameter.maximumPrice
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands/{brandId}/products'].get
  update:
    x-apievangelist-phrasing:
      intent: Search all products of a brand
      effect: read
      questions:
      - How can a shopper browse every product a brand sells on the storefront?
      - Can I search within a brand's products by keyword and page through the results?
      instructions:
      - text: List all storefront products for brand {brandId}.
        slots:
          brandId: path.brandId
      - text: Search brand {brandId}'s products for {query}, page {page}.
        slots:
          brandId: path.brandId
          query: query.parameter.query
          page: query.parameter.page
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands/{BrandId}/categories/{CategoryId}/products'].get
  update:
    x-apievangelist-phrasing:
      intent: List a brand's products in one category
      effect: read
      questions:
      - Which of a brand's products fall inside a particular category?
      - Can I sort a brand's products within one category?
      instructions:
      - text: List brand {BrandId}'s products in category {CategoryId}.
        slots:
          BrandId: path.BrandId
          CategoryId: path.CategoryId
      - text: Show products for brand {BrandId} in category {CategoryId} sorted by {sort}.
        slots:
          BrandId: path.BrandId
          CategoryId: path.CategoryId
          sort: query.parameter.sort
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands'].get
  update:
    x-apievangelist-phrasing:
      intent: Browse storefront brands
      effect: read
      questions:
      - How do I build an A-Z brand directory showing brands that start with a given letter?
      - Can I show brands from one manufacturer or in random order on the storefront?
      instructions:
      - text: List storefront brands whose names start with {startsWith}.
        slots:
          startsWith: query.parameter.startsWith
      - text: Show brands from manufacturer {manufacturer} in random order.
        slots:
          manufacturer: query.parameter.manufacturer
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands/{BrandId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a brand for the storefront
      effect: read
      questions:
      - How do I load a brand's details to render its storefront brand page?
      - Can I expand extra information when fetching a single storefront brand?
      instructions:
      - text: Get storefront brand {BrandId}.
        slots:
          BrandId: path.BrandId
      - text: Load brand {BrandId} for display with {expand} expanded.
        slots:
          BrandId: path.BrandId
          expand: query.parameter.expand
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands/getByPath'].get
  update:
    x-apievangelist-phrasing:
      intent: Find a brand by its URL path
      effect: read
      questions:
      - Can I resolve which brand a storefront URL path belongs to?
      - How do I look up a brand when I only have its page path?
      instructions:
      - text: Find the brand at URL path {path}.
        slots:
          path: query.path
      - text: Resolve the brand behind page path {path}.
        slots:
          path: query.path
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands/feederData'].get
  update:
    x-apievangelist-phrasing:
      intent: Get brand feeder data
      effect: read
      questions:
      - What does the brands feederData endpoint return for storefront widgets?
      - Is there a single call that feeds brand data into content blocks?
      instructions:
      - text: Get the brand feeder data.
      - text: Pull brands feederData for the storefront content widgets.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands/{BrandId}/productlines'].get
  update:
    x-apievangelist-phrasing:
      intent: List a brand's product lines
      effect: read
      questions:
      - What product lines does a brand offer on the storefront?
      - Can I show only featured or sponsored product lines for a brand?
      instructions:
      - text: List the product lines of brand {BrandId}.
        slots:
          BrandId: path.BrandId
      - text: Show only featured product lines for brand {BrandId}.
        slots:
          BrandId: path.BrandId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/brands/{BrandId}/productlines/{ProductLineId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one product line for the storefront
      effect: read
      questions:
      - How do I display the details of a single product line on a brand's storefront page?
      - Can I expand extra detail on one storefront product line?
      instructions:
      - text: Get storefront product line {ProductLineId} of brand {BrandId}.
        slots:
          ProductLineId: path.ProductLineId
          BrandId: path.BrandId
      - text: Load brand {BrandId}'s product line {ProductLineId} with {expand} expanded.
        slots:
          BrandId: path.BrandId
          ProductLineId: path.ProductLineId
          expand: query.parameter.expand
      method: generated
      generated: '2026-09-26'