Optimizely · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Optimizely Categories API

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

$.info
$.paths['/api/v1/admin/Categories'].get
$.paths['/api/v1/admin/Categories'].post
$.paths['/api/v1/admin/Categories({id})'].get
$.paths['/api/v1/admin/Categories({id})'].put
$.paths['/api/v1/admin/Categories({id})'].delete
$.paths['/api/v1/admin/Categories({id})'].patch
$.paths['/api/v1/admin/Categories/Default.Default()'].get
$.paths['/api/v1/admin/Categories/Default.archive'].post
$.paths['/api/v1/admin/categories({key})/categoryPersonas'].get
$.paths['/api/v1/admin/categories/categoriesWithParents'].post
$.paths['/api/v1/admin/categories/archive'].delete
$.paths['/api/v1/admin/categories/delete'].delete
$.paths['/api/v1/admin/categories({key})/attributevalues({attributevalueKey})'].get
$.paths['/api/v1/admin/categories({key})/categoryattributetypes({categoryattributetypeKey})'].get
$.paths['/api/v1/admin/categories({key})/categoryrelatedproducts({categoryrelatedproductKey})'].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 Categories API
  version: 1.0.0
extends: openapi/optimizely-categories-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: 26
- target: $.paths['/api/v1/admin/Categories'].get
  update:
    x-apievangelist-phrasing:
      intent: List product categories in the admin console
      effect: read
      questions:
      - How do I pull every product category from the Commerce admin API?
      - Can I filter and sort the admin category list, or only page through it?
      instructions:
      - text: List all product categories from the admin API.
      - text: Show the first {top} admin categories matching {filter}.
        slots:
          top: query.$top
          filter: query.$filter
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Categories'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new product category
      effect: write
      questions:
      - What fields are required when I add a new product category?
      - Can a new category be created under an existing parent category?
      instructions:
      - text: Create a category named {name} with URL segment {urlSegment}.
        slots:
          name: requestBody.name
          urlSegment: requestBody.urlSegment
      - text: Add a new category {name} under parent category {parentId}.
        slots:
          name: requestBody.name
          parentId: requestBody.parentId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Categories({id})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one category by its id in the admin API
      effect: read
      questions:
      - How can I look up a single category record by its id as an admin?
      - What does the admin API return for one specific category?
      instructions:
      - text: Fetch admin category {id}.
        slots:
          id: path.id
      - text: Show me the full admin record for category {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Categories({id})'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a category record entirely
      effect: write
      questions:
      - Can I overwrite every field of an existing category in one call?
      - What happens to fields I leave out when I fully replace a category?
      instructions:
      - text: Replace category {id} with a full record named {name}.
        slots:
          id: path.id
          name: requestBody.name
      - text: Overwrite category {id} entirely, setting its page title to {pageTitle}.
        slots:
          id: path.id
          pageTitle: requestBody.pageTitle
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Categories({id})'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a single category by id
      effect: destructive
      questions:
      - How do I delete one category by its id?
      - Does removing a single category support an If-Match concurrency check?
      instructions:
      - text: Delete category {id}.
        slots:
          id: path.id
      - text: Delete category {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/Categories({id})'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update some fields on a category
      effect: write
      questions:
      - Can I change just a category's meta description without resending everything?
      - Is there a way to mark an existing category as featured?
      instructions:
      - text: Update the meta description of category {id} to {metaDescription}.
        slots:
          id: path.id
          metaDescription: requestBody.metaDescription
      - text: Mark category {id} as featured.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Categories/Default.Default()'].get
  update:
    x-apievangelist-phrasing:
      intent: Get default values for a new category
      effect: read
      questions:
      - What default values does a brand-new category start with?
      - Is there a blank category template I can start from before creating one?
      instructions:
      - text: Get the default starting values for a new category.
      - text: Show me the empty category template the admin uses.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/Categories/Default.archive'].post
  update:
    x-apievangelist-phrasing:
      intent: Archive categories via the OData archive action
      effect: destructive
      questions:
      - How do I archive several categories using the OData archive action?
      - Can I hide categories without permanently deleting them through the Default.archive call?
      instructions:
      - text: Run the OData archive action on categories {ids}.
        slots:
          ids: query.ids
      - text: Archive categories {ids} with the Default.archive action call.
        slots:
          ids: query.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/categoryPersonas'].get
  update:
    x-apievangelist-phrasing:
      intent: List the personas assigned to a category
      effect: read
      questions:
      - Which personas are linked to a given category?
      - Can I include archived persona assignments when listing a category's personas?
      instructions:
      - text: List the category persona assignments for category {key}.
        slots:
          key: path.key
      - text: Show the personas for category {key} using archive filter {archiveFilter}.
        slots:
          key: path.key
          archiveFilter: query.archiveFilter
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories/categoriesWithParents'].post
  update:
    x-apievangelist-phrasing:
      intent: Get categories together with their parent chain
      effect: read
      questions:
      - How can I get categories along with their parent categories in one response?
      - Is there a way to see the full parent hierarchy for my categories?
      instructions:
      - text: Fetch the categories with their parent categories included.
      - text: Return each category alongside its parent hierarchy.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories/archive'].delete
  update:
    x-apievangelist-phrasing:
      intent: Archive categories through the archive route
      effect: destructive
      questions:
      - Can I archive a batch of categories with a DELETE on the archive route?
      - What is the REST-style route for archiving categories by id list?
      instructions:
      - text: Archive categories {ids} using the categories/archive route.
        slots:
          ids: query.ids
      - text: Send the batch archive request for categories {ids}.
        slots:
          ids: query.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories/delete'].delete
  update:
    x-apievangelist-phrasing:
      intent: Permanently delete several categories at once
      effect: destructive
      questions:
      - How do I bulk delete multiple categories in one request?
      - Can I permanently remove a list of categories by their ids?
      instructions:
      - text: Bulk delete categories {ids}.
        slots:
          ids: query.ids
      - text: Permanently delete every category in the list {ids}.
        slots:
          ids: query.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/attributevalues({attributevalueKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an attribute value assigned to a category
      effect: read
      questions:
      - How do I read one attribute value attached to a category?
      - Can I check whether a specific attribute value belongs to a category?
      instructions:
      - text: Get attribute value {attributevalueKey} on category {key}.
        slots:
          key: path.key
          attributevalueKey: path.attributevalueKey
      - text: Show the attribute value {attributevalueKey} linked to category {key}.
        slots:
          key: path.key
          attributevalueKey: path.attributevalueKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/categoryattributetypes({categoryattributetypeKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an attribute type configured on a category
      effect: read
      questions:
      - Which attribute type settings apply to a given category?
      - Can I look up one category attribute type assignment by its key?
      instructions:
      - text: Get category attribute type {categoryattributetypeKey} for category {key}.
        slots:
          key: path.key
          categoryattributetypeKey: path.categoryattributetypeKey
      - text: Show how attribute type {categoryattributetypeKey} is configured on category {key}.
        slots:
          key: path.key
          categoryattributetypeKey: path.categoryattributetypeKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/categoryrelatedproducts({categoryrelatedproductKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a related product link on a category
      effect: read
      questions:
      - How can I see one related-product entry set up for a category?
      - What details are stored for a category's related product?
      instructions:
      - text: Get category related product {categoryrelatedproductKey} on category {key}.
        slots:
          key: path.key
          categoryrelatedproductKey: path.categoryrelatedproductKey
      - text: Show related-product entry {categoryrelatedproductKey} for category {key}.
        slots:
          key: path.key
          categoryrelatedproductKey: path.categoryrelatedproductKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/customproperties({custompropertyKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a custom property on a category
      effect: read
      questions:
      - How do I read a custom property value stored on a category?
      - Can I fetch one specific custom field from a category record?
      instructions:
      - text: Get custom property {custompropertyKey} of category {key}.
        slots:
          key: path.key
          custompropertyKey: path.custompropertyKey
      - text: Show the value of custom property {custompropertyKey} on category {key}.
        slots:
          key: path.key
          custompropertyKey: path.custompropertyKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/dealers({dealerKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a dealer associated with a category
      effect: read
      questions:
      - Which dealer record is tied to a particular category?
      - Can I confirm that a dealer is assigned to a category?
      instructions:
      - text: Get dealer {dealerKey} assigned to category {key}.
        slots:
          key: path.key
          dealerKey: path.dealerKey
      - text: Show the dealer {dealerKey} linked with category {key}.
        slots:
          key: path.key
          dealerKey: path.dealerKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/documents({documentKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a document attached to a category
      effect: read
      questions:
      - How do I retrieve a document attached to a category?
      - Can categories carry documents like spec sheets I can look up individually?
      instructions:
      - text: Get document {documentKey} attached to category {key}.
        slots:
          key: path.key
          documentKey: path.documentKey
      - text: Open the category document {documentKey} for category {key}.
        slots:
          key: path.key
          documentKey: path.documentKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/personas({personaKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one persona targeted by a category
      effect: read
      questions:
      - Can I look up a single persona that a category targets?
      - What persona details come back for one category persona key?
      instructions:
      - text: Get persona {personaKey} on category {key}.
        slots:
          key: path.key
          personaKey: path.personaKey
      - text: Show the single persona {personaKey} that category {key} targets.
        slots:
          key: path.key
          personaKey: path.personaKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/products({productKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a product assigned to a category
      effect: read
      questions:
      - How do I check a specific product inside a category?
      - Can I fetch one product through the category it belongs to?
      instructions:
      - text: Get product {productKey} within category {key}.
        slots:
          key: path.key
          productKey: path.productKey
      - text: Show product {productKey} as assigned to category {key}.
        slots:
          key: path.key
          productKey: path.productKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/specifications({specificationKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a specification on a category
      effect: read
      questions:
      - Where do I read a specification entry defined for a category?
      - Can a category have specifications I can retrieve one at a time?
      instructions:
      - text: Get specification {specificationKey} of category {key}.
        slots:
          key: path.key
          specificationKey: path.specificationKey
      - text: Show the specification {specificationKey} content for category {key}.
        slots:
          key: path.key
          specificationKey: path.specificationKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/subcategories({categoryKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a subcategory of a category
      effect: read
      questions:
      - How do I get one child subcategory under a parent category?
      - Can I confirm a category is a subcategory of another one?
      instructions:
      - text: Get subcategory {categoryKey} under category {key}.
        slots:
          key: path.key
          categoryKey: path.categoryKey
      - text: Show child category {categoryKey} of parent category {key}.
        slots:
          key: path.key
          categoryKey: path.categoryKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/admin/categories({key})/taxexemptions({taxexemptionKey})'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a tax exemption linked to a category
      effect: read
      questions:
      - Which tax exemption applies to products in a category?
      - Can I look up one tax exemption assigned to a category?
      instructions:
      - text: Get tax exemption {taxexemptionKey} on category {key}.
        slots:
          key: path.key
          taxexemptionKey: path.taxexemptionKey
      - text: Show tax exemption {taxexemptionKey} for category {key}.
        slots:
          key: path.key
          taxexemptionKey: path.taxexemptionKey
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/categories'].get
  update:
    x-apievangelist-phrasing:
      intent: Browse the storefront category tree
      effect: read
      questions:
      - How do I get the category navigation tree for my storefront?
      - Can I limit how many levels deep the storefront category tree goes?
      - Is it possible to start the storefront tree from a particular category?
      instructions:
      - text: Get the storefront category tree down to depth {maxDepth}.
        slots:
          maxDepth: query.parameter.maxDepth
      - text: Load the storefront categories beneath category {startCategoryId}.
        slots:
          startCategoryId: query.parameter.startCategoryId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/categories/{categoryId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a category as shoppers see it on the storefront
      effect: read
      questions:
      - How do I load one category for display on the storefront?
      - What does a shopper-facing category record include?
      instructions:
      - text: Get storefront category {categoryId}.
        slots:
          categoryId: path.categoryId
      - text: Load the shopper-facing details for category {categoryId}.
        slots:
          categoryId: path.categoryId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/api/v1/categories/feederData'].get
  update:
    x-apievangelist-phrasing:
      intent: Get category feeder data for a storefront widget
      effect: read
      questions:
      - What is category feeder data and how do I request it by type?
      - Can I pull the category feed that populates storefront widgets?
      instructions:
      - text: Get category feeder data of type {type}.
        slots:
          type: query.type
      - text: Load the {type} category feed for the storefront.
        slots:
          type: query.type
      method: generated
      generated: '2026-09-26'