Optimizely · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Optimizely Content API
28 actions
28 updates
phrasing
extends
openapi/optimizely-content-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.
What the actions change
x-apievangelist-phrasing
Targets 28 · first 16 shown; the file carries all of them
$.info
$.paths['/content'].get
$.paths['/content'].post
$.paths['/content/{contentId}'].get
$.paths['/api/v2/content/PageByType'].get
$.paths['/api/v2/content/PagesByParent'].get
$.paths['/api/v2/content/PageByUrl'].get
$.paths['/api/v2/content/PageUrlByType'].get
$.paths['/api/v2/content/PageLinks'].get
$.paths['/api/v2/content/GetNodeIdForPageName'].get
$.paths['/api/v2/content/Theme'].get
$.paths['/content/{contentId}/children'].get
$.paths['/content/{contentId}/ancestors'].get
$.paths['/'].post
$.paths['/{contentGuid}'].get
$.paths['/{contentGuid}'].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 Optimizely Content API
version: 1.0.0
extends: openapi/optimizely-content-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['/content'].get
update:
x-apievangelist-phrasing:
intent: List items in the CMP content repository
effect: read
questions:
- What content items are sitting in my Optimizely CMP content repository?
- Can I page through the CMP content library with a limit and offset?
instructions:
- text: List everything in the CMP content repository.
- text: Show {limit} CMP content items starting after the first {offset}.
slots:
limit: query.limit
offset: query.offset
method: generated
generated: '2026-09-26'
- target: $.paths['/content'].post
update:
x-apievangelist-phrasing:
intent: Import a content item from a URL
effect: write
questions:
- How do I ingest an article into the content library just by giving its URL?
- Does importing content from a link happen right away or is it queued?
instructions:
- text: Import the page at {original_url} as a new content item.
slots:
original_url: requestBody.original_url
- text: Queue {original_url} for content ingestion.
slots:
original_url: requestBody.original_url
method: generated
generated: '2026-09-26'
- target: $.paths['/content/{contentId}'].get
update:
x-apievangelist-phrasing:
intent: Get a CMP content item's details
effect: read
questions:
- How can I look up the details of a single item in the CMP content repository?
- What does the CMP return for one content item when I know its content ID?
instructions:
- text: Get CMP content item {contentId}.
slots:
contentId: path.contentId
- text: Show me the repository details for CMP content {contentId}.
slots:
contentId: path.contentId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v2/content/PageByType'].get
update:
x-apievangelist-phrasing:
intent: Get a storefront page by its page type
effect: read
questions:
- How do I fetch the storefront page definition for a given page type like the home page?
- Can I load a Configured Commerce page just by knowing its type name?
instructions:
- text: Load the storefront page of type {type}.
slots:
type: query.type
- text: Get the page content for the {type} page type.
slots:
type: query.type
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v2/content/PagesByParent'].get
update:
x-apievangelist-phrasing:
intent: List storefront pages under a parent node
effect: read
questions:
- Which storefront pages sit underneath a given parent node in the page tree?
- Can I get all child pages of a node in the commerce site structure?
instructions:
- text: List the storefront pages under parent node {parentNodeId}.
slots:
parentNodeId: query.parentNodeId
- text: Show all pages whose parent is node {parentNodeId}.
slots:
parentNodeId: query.parentNodeId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v2/content/PageByUrl'].get
update:
x-apievangelist-phrasing:
intent: Get a storefront page by its URL
effect: read
questions:
- How do I resolve a storefront URL path to the page that renders it?
- Can I fetch a commerce page's content when all I have is its URL?
instructions:
- text: Get the storefront page served at {url}.
slots:
url: query.url
- text: Resolve URL {url} to its page content.
slots:
url: query.url
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v2/content/PageUrlByType'].get
update:
x-apievangelist-phrasing:
intent: Look up the URL of a storefront page type
effect: read
questions:
- What URL does the storefront use for a particular page type, say the cart page?
- Can I find out where a page type lives so I can link to it?
instructions:
- text: Give me the URL of the {type} page.
slots:
type: query.type
- text: Find the storefront link for page type {type}.
slots:
type: query.type
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v2/content/PageLinks'].get
update:
x-apievangelist-phrasing:
intent: Get the storefront's page links for navigation
effect: read
questions:
- How do I pull the set of page links that drive my storefront navigation?
- Is there a single call that returns the links to all the site's pages?
instructions:
- text: Fetch the storefront page links.
- text: Get the list of page links I need to build the site menu.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v2/content/GetNodeIdForPageName'].get
update:
x-apievangelist-phrasing:
intent: Find the node ID for a storefront page name
effect: read
questions:
- How do I find the content node ID behind a page when I only know its name?
- Which node ID corresponds to a named storefront page?
instructions:
- text: Look up the node ID for the page named {pageName}.
slots:
pageName: query.pageName
- text: Get the content node for page {pageName}.
slots:
pageName: query.pageName
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v2/content/Theme'].get
update:
x-apievangelist-phrasing:
intent: Get the storefront's current theme
effect: read
questions:
- Which theme is my commerce storefront currently using?
- Can I read the active site theme so my headless front end matches it?
instructions:
- text: Get the active storefront theme.
- text: Tell me which theme the site is set to.
method: generated
generated: '2026-09-26'
- target: $.paths['/content/{contentId}/children'].get
update:
x-apievangelist-phrasing:
intent: List child items of a content item
effect: read
questions:
- How do I walk down a CMS page tree to see the items beneath a page?
- Can I skip and limit results when listing a content item's children in a given language?
instructions:
- text: List the child items of content {contentId}.
slots:
contentId: path.contentId
- text: Show {top} children of content {contentId} in {language}, skipping the first {skip}.
slots:
top: query.top
contentId: path.contentId
language: query.language
skip: query.skip
method: generated
generated: '2026-09-26'
- target: $.paths['/content/{contentId}/ancestors'].get
update:
x-apievangelist-phrasing:
intent: List the ancestors of a content item
effect: read
questions:
- How can I get the chain of parent items from the root down to a content item?
- What calls give me a breadcrumb trail for a CMS page by its content ID?
instructions:
- text: Get the ancestor path for content {contentId}.
slots:
contentId: path.contentId
- text: Build a breadcrumb for content {contentId} in {language}.
slots:
contentId: path.contentId
language: query.language
method: generated
generated: '2026-09-26'
- target: $.paths['/'].post
update:
x-apievangelist-phrasing:
intent: Create a new content item in the CMS
effect: write
questions:
- How do I create a new page or block of a given content type under a parent in Optimizely CMS?
- Can I create a language branch of existing content instead of a brand-new item?
- Is it possible to upload a media file when creating content?
instructions:
- text: Create a {contentType} named {name} under parent {parentLink}.
slots:
contentType: requestBody.contentType
name: requestBody.name
parentLink: requestBody.parentLink
- text: Create content {name} of type {contentType} under {parentLink}, scheduled to publish at {startPublish}.
slots:
name: requestBody.name
contentType: requestBody.contentType
parentLink: requestBody.parentLink
startPublish: requestBody.startPublish
method: generated
generated: '2026-09-26'
- target: $.paths['/{contentGuid}'].get
update:
x-apievangelist-phrasing:
intent: Get a content item by its GUID
effect: read
questions:
- How do I fetch the primary draft or latest published version of content using its GUID?
- Can I read a CMS item for editing when I only have its GUID?
instructions:
- text: Get the content item with GUID {contentGuid}.
slots:
contentGuid: path.contentGuid
- text: Load the current draft of content {contentGuid} for editing.
slots:
contentGuid: path.contentGuid
method: generated
generated: '2026-09-26'
- target: $.paths['/{contentGuid}'].put
update:
x-apievangelist-phrasing:
intent: Replace or upsert a content item by GUID
effect: write
questions:
- How do I overwrite a whole content item by GUID, creating it if it doesn't exist?
- Will a full update by GUID create new content when nothing matches that GUID?
instructions:
- text: Upsert content {contentGuid} as {contentType} named {name} under {parentLink}.
slots:
contentGuid: path.contentGuid
contentType: requestBody.contentType
name: requestBody.name
parentLink: requestBody.parentLink
- text: Fully replace content {contentGuid} and set its status to {status}.
slots:
contentGuid: path.contentGuid
status: requestBody.status
method: generated
generated: '2026-09-26'
- target: $.paths['/{contentGuid}'].delete
update:
x-apievangelist-phrasing:
intent: Trash or permanently delete content
effect: destructive
questions:
- How do I delete a CMS item by its GUID?
- Does deleting content send it to the trash bin, or can I skip the trash and remove it for good?
instructions:
- text: Move content {contentGuid} to the trash.
slots:
contentGuid: path.contentGuid
- text: Permanently delete content {contentGuid} with permanent set to {permanent}.
slots:
contentGuid: path.contentGuid
permanent: query.permanent
method: generated
generated: '2026-09-26'
- target: $.paths['/{contentGuid}'].patch
update:
x-apievangelist-phrasing:
intent: Change a few fields on a content item
effect: write
questions:
- Can I update just the name or status of a content item without resending everything?
- How do I tweak a single property on a CMS page identified by GUID?
instructions:
- text: Rename content {contentGuid} to {name}.
slots:
contentGuid: path.contentGuid
name: requestBody.name
- text: Set only the status of content {contentGuid} to {status}.
slots:
contentGuid: path.contentGuid
status: requestBody.status
method: generated
generated: '2026-09-26'
- target: $.paths['/{contentGuid}/move'].post
update:
x-apievangelist-phrasing:
intent: Move a content item under a new parent
effect: write
questions:
- How do I relocate a page so it becomes a child of a different node?
- Can I restructure my CMS tree by moving an item to another parent?
instructions:
- text: Move content {contentGuid} under {destination}.
slots:
contentGuid: path.contentGuid
destination: requestBody.destination
- text: Reparent item {contentGuid} to node {destination}.
slots:
contentGuid: path.contentGuid
destination: requestBody.destination
method: generated
generated: '2026-09-26'
- target: $.paths['/{contentReference}'].get
update:
x-apievangelist-phrasing:
intent: Get a content item by its numeric reference
effect: read
questions:
- How do I fetch a CMS item using its numeric content reference rather than a GUID?
- What comes back when I look content up by reference ID in the management API?
instructions:
- text: Get content by reference {contentReference}.
slots:
contentReference: path.contentReference
- text: Look up the item whose content reference is {contentReference}.
slots:
contentReference: path.contentReference
method: generated
generated: '2026-09-26'
- target: $.paths['/api/episerver/v3.0/content/{contentIdentifier}'].get
update:
x-apievangelist-phrasing:
intent: Deliver a content item by reference or GUID
effect: read
questions:
- How do I read published content through the Content Delivery API in a specific language?
- Can I choose which properties to return or expand when delivering a single content item?
instructions:
- text: Deliver content {contentIdentifier} in {language}.
slots:
contentIdentifier: path.contentIdentifier
language: header.Accept-Language
- text: Fetch delivered content {contentIdentifier} returning only {select}.
slots:
contentIdentifier: path.contentIdentifier
select: query.select
method: generated
generated: '2026-09-26'
- target: $.paths['/api/episerver/v3.0/content/{contentIdentifier}/children'].get
update:
x-apievangelist-phrasing:
intent: Deliver the children of a content item
effect: read
questions:
- Which children does a page have when read through the Content Delivery API?
- Can I page children with a continuation token in the delivery API?
instructions:
- text: Deliver the children of {contentIdentifier} in {language}.
slots:
contentIdentifier: path.contentIdentifier
language: header.Accept-Language
- text: Get up to {top} delivered child items of {contentIdentifier}.
slots:
top: query.top
contentIdentifier: path.contentIdentifier
method: generated
generated: '2026-09-26'
- target: $.paths['/api/episerver/v3.0/content/{contentIdentifier}/ancestors'].get
update:
x-apievangelist-phrasing:
intent: Deliver the ancestors of a content item
effect: read
questions:
- How do I get a page's parents through the Content Delivery API for site navigation?
- Can the delivery API return ancestors localized to a given language?
instructions:
- text: Deliver the ancestors of {contentIdentifier}.
slots:
contentIdentifier: path.contentIdentifier
- text: List delivered parent pages of {contentIdentifier} in {language}.
slots:
contentIdentifier: path.contentIdentifier
language: header.Accept-Language
method: generated
generated: '2026-09-26'
- target: $.paths['/api/episerver/v3.0/content'].get
update:
x-apievangelist-phrasing:
intent: Deliver content by URL or a list of IDs
effect: read
questions:
- How do I get published content from its full URL through the delivery API?
- Can I fetch several content items at once by passing a comma-separated list of GUIDs?
- Is there a way to require the URL to match exactly with no extra segments?
instructions:
- text: Deliver the content at {ContentUrl}, matching the URL exactly.
slots:
ContentUrl: query.ContentUrl
- text: Deliver the content items with GUIDs {Guids}.
slots:
Guids: query.Guids
- text: Deliver content references {References} in {language}.
slots:
References: query.References
language: header.Accept-Language
method: generated
generated: '2026-09-26'
- target: $.paths['/content/_filter'].post
update:
x-apievangelist-phrasing:
intent: Search content items with a Lucene query
effect: read
questions:
- How do I filter the content library with a Lucene query?
- Can content search results include topic information and be paginated?
instructions:
- text: Search content matching the Lucene query {query}.
slots:
query: requestBody.query
- text: Run content filter {query} and return page {page} with {rpp} results per page.
slots:
query: requestBody.query
page: query.page
rpp: query.rpp
method: generated
generated: '2026-09-26'
- target: $.paths['/content/{id}'].get
update:
x-apievangelist-phrasing:
intent: Fetch a recommendations content item by ID
effect: read
questions:
- How do I see the title, abstract and approval status of an ingested content item?
- Can I check whether an ingested article is featured or approved?
instructions:
- text: Fetch ingested content item {id}.
slots:
id: path.id
- text: Show whether content {id} is approved and featured.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/content/{id}'].patch
update:
x-apievangelist-phrasing:
intent: Approve or feature an ingested content item
effect: write
questions:
- How do I mark an ingested article as approved?
- Which fields can I actually change on a content item - just approved and featured?
instructions:
- text: Set approved to {approved} on content {id}.
slots:
approved: requestBody.approved
id: path.id
- text: 'Mark content {id} as featured: {featured}.'
slots:
id: path.id
featured: requestBody.featured
method: generated
generated: '2026-09-26'
- target: $.paths['/content/{id}/sections'].get
update:
x-apievangelist-phrasing:
intent: List the sections that contain a content item
effect: read
questions:
- Which sections is a given content item included in?
- Can I see every section an article appears in?
instructions:
- text: List the sections containing content {id}.
slots:
id: path.id
- text: Show where content {id} is placed across sections.
slots:
id: path.id
method: generated
generated: '2026-09-26'