# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Admin API V1 Plugins API version: 1.0.0 extends: openapi/optimizely-plugins-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: 11 - target: $.paths['/api/v1/admin/Plugins'].get update: x-apievangelist-phrasing: intent: List plugins effect: read questions: - Which integration plugins are registered in the commerce admin? - Can I filter plugins to only active ones? - How many plugins are configured? instructions: - text: List all plugins. - text: Find plugins matching {filter}. slots: filter: query.$filter method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Plugins'].post update: x-apievangelist-phrasing: intent: Register a plugin effect: write questions: - How do I register a new integration plugin with its interface and version? - What's required to add a plugin, like connection name and full type name? instructions: - text: Register plugin {name} version {version} implementing {interfaceName}. slots: name: requestBody.name version: requestBody.version interfaceName: requestBody.interfaceName - text: Add plugin {fullName} on connection {connectionName}. slots: fullName: requestBody.fullName connectionName: requestBody.connectionName method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Plugins({id})'].get update: x-apievangelist-phrasing: intent: Get a plugin effect: read questions: - Can I see one plugin's interface, version and connection? - Is a specific plugin active? instructions: - text: Show plugin {id}. slots: id: path.id - text: Get details of plugin {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Plugins({id})'].put update: x-apievangelist-phrasing: intent: Replace a plugin effect: write questions: - How do I overwrite a plugin record completely? - Does a full plugin replace need every required field again? instructions: - text: Replace plugin {id} with a full record at version {version}. slots: id: path.id version: requestBody.version - text: Overwrite all fields of plugin {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Plugins({id})'].delete update: x-apievangelist-phrasing: intent: Delete a plugin effect: destructive questions: - How do I permanently delete a plugin? - Can a plugin delete be conditional on an ETag? instructions: - text: Delete plugin {id}. slots: id: path.id - text: Delete plugin {id} if its ETag is {etag}. slots: id: path.id etag: header.If-Match method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Plugins({id})'].patch update: x-apievangelist-phrasing: intent: Update fields on a plugin effect: write questions: - Can I deactivate a plugin without replacing it? - How do I change only a plugin's description? instructions: - text: Set plugin {id} active status to {isActive}. slots: id: path.id isActive: requestBody.isActive - text: Update the description of plugin {id} to {description}. slots: id: path.id description: requestBody.description method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Plugins/Default.Default()'].get update: x-apievangelist-phrasing: intent: Get default values for a new plugin effect: read questions: - What defaults does a new plugin record start with? - Is there an empty plugin template? instructions: - text: Get the default plugin template. - text: Show prefilled defaults for a new plugin. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/Plugins/Default.archive'].post update: x-apievangelist-phrasing: intent: Archive plugins via OData action effect: write questions: - Can I archive plugins using the OData archive action? - How do I retire plugins with a POST rather than deleting them? instructions: - text: Archive plugins {ids} using the Default.archive action. slots: ids: query.ids - text: Run the archive action for plugins {ids}. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/plugins/archive'].delete update: x-apievangelist-phrasing: intent: Archive plugins via route effect: destructive questions: - Which endpoint archives plugins with a DELETE to the archive path? - Can I archive several plugins through the archive route? instructions: - text: Archive plugins {ids} through the /archive route. slots: ids: query.ids - text: Send plugins {ids} to archive using the DELETE archive endpoint. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/plugins/delete'].delete update: x-apievangelist-phrasing: intent: Bulk delete plugins effect: destructive questions: - Can I permanently delete many plugins at once? - How do I bulk remove plugins by ID? instructions: - text: Bulk delete plugins {ids}. slots: ids: query.ids - text: Permanently remove the plugins with IDs {ids}. slots: ids: query.ids method: generated generated: '2026-09-26' - target: $.paths['/api/v1/admin/plugins({key})/customproperties({custompropertyKey})'].get update: x-apievangelist-phrasing: intent: Get a custom property on a plugin effect: read questions: - Can I read a custom property stored on a plugin? - Where are extra custom fields for a plugin kept? instructions: - text: Show custom property {property} on plugin {key}. slots: property: path.custompropertyKey key: path.key - text: Get plugin {key}'s custom field {property}. slots: property: path.custompropertyKey key: path.key method: generated generated: '2026-09-26'