Optimizely · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Optimizely Holdouts API
8 actions
8 updates
phrasing
extends
openapi/optimizely-holdouts-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 8
$.info
$.paths['/projects/{project_id}/holdouts'].get
$.paths['/projects/{project_id}/holdouts'].post
$.paths['/projects/{project_id}/holdouts/{holdout_id}'].get
$.paths['/projects/{project_id}/holdouts/{holdout_id}'].post
$.paths['/projects/{project_id}/holdouts/{holdout_id}'].delete
$.paths['/projects/{project_id}/holdouts/{holdout_id}/experiments'].get
$.paths['/export/projects/{project_id}/holdouts/{holdout_id}/results/csv'].get
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 Holdouts API
version: 1.0.0
extends: openapi/optimizely-holdouts-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: 7
- target: $.paths['/projects/{project_id}/holdouts'].get
update:
x-apievangelist-phrasing:
intent: List holdouts in a project
effect: read
questions:
- Which holdouts are currently running in my Optimizely project?
- Can I filter holdouts to draft or concluded ones only?
- Is it possible to search holdouts by name or key?
instructions:
- text: List holdouts in project {project_id}.
slots:
project_id: path.project_id
- text: Show holdouts in project {project_id} with status {status}.
slots:
project_id: path.project_id
status: query.status
- text: Search holdouts in project {project_id} for {query}, sorted by {sort}.
slots:
project_id: path.project_id
query: query.query
sort: query.sort
method: generated
generated: '2026-09-26'
- target: $.paths['/projects/{project_id}/holdouts'].post
update:
x-apievangelist-phrasing:
intent: Create a holdout control group
effect: write
questions:
- How do I reserve a slice of traffic as a baseline that sees no experiments?
- What traffic allocation units does a new holdout use, percent or basis points?
- Can a holdout be scoped to all experiments or just some?
instructions:
- text: Create holdout {name} with key {key} in project {project_id}.
slots:
name: requestBody.name
key: requestBody.key
project_id: path.project_id
- text: Create holdout {name} ({key}) in project {project_id} holding back {traffic_allocation} basis points in {environment_key}.
slots:
name: requestBody.name
key: requestBody.key
project_id: path.project_id
traffic_allocation: requestBody.traffic_allocation
environment_key: requestBody.environment_key
method: generated
generated: '2026-09-26'
- target: $.paths['/projects/{project_id}/holdouts/{holdout_id}'].get
update:
x-apievangelist-phrasing:
intent: Get a holdout's configuration
effect: read
questions:
- What traffic allocation and status does a specific holdout have?
- Can I see the audience conditions and metrics configured on one holdout?
instructions:
- text: Fetch holdout {holdout_id} in project {project_id}.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
- text: Show the configuration of holdout {holdout_id} in project {project_id}.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/projects/{project_id}/holdouts/{holdout_id}'].post
update:
x-apievangelist-phrasing:
intent: Update a holdout with JSON Patch
effect: write
questions:
- How do I move a holdout from draft to running?
- Can I change a holdout's traffic allocation without replacing the whole thing?
instructions:
- text: Patch holdout {holdout_id} in project {project_id} to set its status to running.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
- text: Conclude holdout {holdout_id} in project {project_id} with a JSON Patch.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/projects/{project_id}/holdouts/{holdout_id}'].delete
update:
x-apievangelist-phrasing:
intent: Permanently delete a holdout
effect: destructive
questions:
- Can I recover a holdout's metric history after deleting it?
- How do I permanently remove a holdout I no longer need?
instructions:
- text: Permanently delete holdout {holdout_id} from project {project_id}.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
- text: Remove holdout {holdout_id} in project {project_id} and all its data.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/projects/{project_id}/holdouts/{holdout_id}/experiments'].get
update:
x-apievangelist-phrasing:
intent: List experiments connected to a holdout
effect: read
questions:
- Which experiments are affected by a particular holdout?
- Can I see start and end times of experiments linked to a holdout?
instructions:
- text: List experiments connected to holdout {holdout_id} in project {project_id}.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
- text: Show the experiments and deployed variations tied to holdout {holdout_id} in project {project_id}.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
method: generated
generated: '2026-09-26'
- target: $.paths['/export/projects/{project_id}/holdouts/{holdout_id}/results/csv'].get
update:
x-apievangelist-phrasing:
intent: Export holdout results as CSV
effect: read
questions:
- How do I download a holdout's results as a spreadsheet?
- Can I segment exported holdout results by device or browser?
instructions:
- text: Export results for holdout {holdout_id} in project {project_id} as CSV.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
- text: Download holdout {holdout_id} results in project {project_id} segmented by device {device}.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
device: query.device
- text: Get CSV results of holdout {holdout_id} in project {project_id} for attribute {attribute_id} equal to {attribute_value}.
slots:
holdout_id: path.holdout_id
project_id: path.project_id
attribute_id: query.attribute_id
attribute_value: query.attribute_value
method: generated
generated: '2026-09-26'