Optimizely · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Admin API V1 Plugins API

12 actions 12 updates phrasing extends openapi/optimizely-plugins-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 12

$.info
$.paths['/api/v1/admin/Plugins'].get
$.paths['/api/v1/admin/Plugins'].post
$.paths['/api/v1/admin/Plugins({id})'].get
$.paths['/api/v1/admin/Plugins({id})'].put
$.paths['/api/v1/admin/Plugins({id})'].delete
$.paths['/api/v1/admin/Plugins({id})'].patch
$.paths['/api/v1/admin/Plugins/Default.Default()'].get
$.paths['/api/v1/admin/Plugins/Default.archive'].post
$.paths['/api/v1/admin/plugins/archive'].delete
$.paths['/api/v1/admin/plugins/delete'].delete
$.paths['/api/v1/admin/plugins({key})/customproperties({custompropertyKey})'].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 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'