Webex · Capability

Webex Cloud Calling — Features: Virtual Extensions

Webex Cloud Calling — Features: Virtual Extensions. 14 operations. Lead operation: Create a Virtual Extension Range. Self-contained Naftiko capability covering one Webex business surface.

Run with Naftiko WebexFeatures: Virtual Extensions

What You Can Do

POST
Createavirtualextensionrange — Create a Virtual Extension Range
/v1/telephony/config/virtualextensionranges
GET
Getalistofavirtualextensionrange — Get a list of a Virtual Extension Range
/v1/telephony/config/virtualextensionranges
POST
Validatetheprefixandextensionpatternforavirtualextensionrange — Validate the prefix and extension pattern for a Virtual Extension Range
/v1/telephony/config/virtualextensionranges/actions/validate/invoke
GET
Getdetailsofavirtualextensionrange — Get details of a Virtual Extension Range
/v1/telephony/config/virtualextensionranges/{extensionrangeid}
DELETE
Deleteavirtualextensionrange — Delete a Virtual Extension Range
/v1/telephony/config/virtualextensionranges/{extensionrangeid}
PUT
Modifyvirtualextensionrange — Modify Virtual Extension Range
/v1/telephony/config/virtualextensionranges/{extensionrangeid}
POST
Createavirtualextension — Create a Virtual Extension
/v1/telephony/config/virtualextensions
GET
Readthelistofvirtualextensions — Read the List of Virtual Extensions
/v1/telephony/config/virtualextensions
POST
Validateanexternalphonenumber — Validate an external phone number
/v1/telephony/config/virtualextensions/actions/validatenumbers/invoke
GET
Getvirtualextensionsettings — Get Virtual extension settings
/v1/telephony/config/virtualextensions/settings
PUT
Modifyvirtualextensionsettings — Modify Virtual Extension Settings
/v1/telephony/config/virtualextensions/settings
GET
Getavirtualextension — Get a Virtual Extension
/v1/telephony/config/virtualextensions/{extensionid}
PUT
Updateavirtualextension — Update a Virtual Extension
/v1/telephony/config/virtualextensions/{extensionid}
DELETE
Deleteavirtualextension — Delete a Virtual Extension
/v1/telephony/config/virtualextensions/{extensionid}

MCP Tools

create-virtual-extension-range

Create a Virtual Extension Range

get-list-virtual-extension-range

Get a list of a Virtual Extension Range

read-only idempotent
validate-prefix-and-extension-pattern

Validate the prefix and extension pattern for a Virtual Extension Range

read-only
get-details-virtual-extension-range

Get details of a Virtual Extension Range

read-only idempotent
delete-virtual-extension-range

Delete a Virtual Extension Range

idempotent
modify-virtual-extension-range

Modify Virtual Extension Range

idempotent
create-virtual-extension

Create a Virtual Extension

read-list-virtual-extensions

Read the List of Virtual Extensions

read-only idempotent
validate-external-phone-number

Validate an external phone number

read-only
get-virtual-extension-settings

Get Virtual extension settings

read-only idempotent
modify-virtual-extension-settings

Modify Virtual Extension Settings

idempotent
get-virtual-extension

Get a Virtual Extension

read-only idempotent
update-virtual-extension

Update a Virtual Extension

idempotent
delete-virtual-extension

Delete a Virtual Extension

idempotent

Capability Spec

cloud-calling-features-virtual-extensions.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: 'Webex Cloud Calling — Features: Virtual Extensions'
  description: 'Webex Cloud Calling — Features: Virtual Extensions. 14 operations. Lead operation: Create a Virtual Extension
    Range. Self-contained Naftiko capability covering one Webex business surface.'
  tags:
  - Webex
  - 'Features: Virtual Extensions'
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    WEBEX_API_KEY: WEBEX_API_KEY
capability:
  consumes:
  - type: http
    namespace: cloud-calling-features-virtual-extensions
    baseUri: ''
    description: 'Webex Cloud Calling — Features: Virtual Extensions business capability. Self-contained, no shared references.'
    resources:
    - name: telephony-config-virtualExtensionRanges
      path: /telephony/config/virtualExtensionRanges
      operations:
      - name: createavirtualextensionrange
        method: POST
        description: Create a Virtual Extension Range
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: getalistofavirtualextensionrange
        method: GET
        description: Get a list of a Virtual Extension Range
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
        - name: max
          in: query
          type: number
          description: Maximum number of results to return.
        - name: start
          in: query
          type: number
          description: The starting index of the results to return.
        - name: order
          in: query
          type: string
          description: Sort the list of virtual extension ranges by name or prefix, either ASC or DSC. Default sort order
            is ASC.
        - name: name
          in: query
          type: string
          description: Filter the list of virtual extension ranges by name.
        - name: prefix
          in: query
          type: string
          description: Filter the list of virtual extension ranges by prefix.
        - name: locationId
          in: query
          type: string
          description: Filter the list of virtual extension ranges by location ID. Only one of the `locationId` and `OrgLevelOnly`
            query parameters is allowed at the same time.
        - name: orgLevelOnly
          in: query
          type: boolean
          description: Filter the list of virtual extension ranges by organization level. If `orgLevelOnly` is true, return
            only the organization level virtual extension ranges.
    - name: telephony-config-virtualExtensionRanges-actions-validate-invoke
      path: /telephony/config/virtualExtensionRanges/actions/validate/invoke
      operations:
      - name: validatetheprefixandextensionpatternforavirtualextensionrange
        method: POST
        description: Validate the prefix and extension pattern for a Virtual Extension Range
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: telephony-config-virtualExtensionRanges-extensionRangeId
      path: /telephony/config/virtualExtensionRanges/{extensionRangeId}
      operations:
      - name: getdetailsofavirtualextensionrange
        method: GET
        description: Get details of a Virtual Extension Range
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: extensionRangeId
          in: path
          type: string
          description: ID of the virtual extension range.
          required: true
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
      - name: deleteavirtualextensionrange
        method: DELETE
        description: Delete a Virtual Extension Range
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: extensionRangeId
          in: path
          type: string
          description: ID of the virtual extension range.
          required: true
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
    - name: telephony-config-virtualExtensionRanges-extensionRangeId
      path: /telephony/config/virtualExtensionRanges/{extensionRangeId}/
      operations:
      - name: modifyvirtualextensionrange
        method: PUT
        description: Modify Virtual Extension Range
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: extensionRangeId
          in: path
          type: string
          description: ID of the virtual extension range.
          required: true
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: telephony-config-virtualExtensions
      path: /telephony/config/virtualExtensions
      operations:
      - name: createavirtualextension
        method: POST
        description: Create a Virtual Extension
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: readthelistofvirtualextensions
        method: GET
        description: Read the List of Virtual Extensions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
        - name: max
          in: query
          type: number
          description: Limit the number of virtual extensions returned to this maximum count. Default is 10.
        - name: start
          in: query
          type: number
          description: Start at the zero-based offset in the list of matching virtual extensions. Default is 0.
        - name: order
          in: query
          type: string
          description: Order the list of virtual extensions in ascending or descending order. Default is ascending.
        - name: extension
          in: query
          type: string
          description: Filter the list of virtual extensions by extension number.
        - name: phoneNumber
          in: query
          type: string
          description: Filter the list of virtual extensions by phone number.
        - name: name
          in: query
          type: string
          description: Filter the list of virtual extensions by name. This can be either first name or last name.
        - name: locationName
          in: query
          type: string
          description: Filter the list of virtual extensions by location name.(Only one of the locationName, locationId, and
            OrgLevelOnly query parameters is allowed at the same time.
        - name: locationId
          in: query
          type: string
          description: Filter the list of virtual extensions by location ID.
        - name: orgLevelOnly
          in: query
          type: boolean
          description: Filter the list of virtual extensions by organization level. If orgLevelOnly is true, return only the
            organization level virtual extensions.
    - name: telephony-config-virtualExtensions-actions-validateNumbers-invoke
      path: /telephony/config/virtualExtensions/actions/validateNumbers/invoke
      operations:
      - name: validateanexternalphonenumber
        method: POST
        description: Validate an external phone number
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: telephony-config-virtualExtensions-settings
      path: /telephony/config/virtualExtensions/settings
      operations:
      - name: getvirtualextensionsettings
        method: GET
        description: Get Virtual extension settings
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
      - name: modifyvirtualextensionsettings
        method: PUT
        description: Modify Virtual Extension Settings
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: telephony-config-virtualExtensions-extensionId
      path: /telephony/config/virtualExtensions/{extensionId}
      operations:
      - name: getavirtualextension
        method: GET
        description: Get a Virtual Extension
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: extensionId
          in: path
          type: string
          description: ID of the virtual extension.
          required: true
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
      - name: updateavirtualextension
        method: PUT
        description: Update a Virtual Extension
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: extensionId
          in: path
          type: string
          description: ID of the virtual extension.
          required: true
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: deleteavirtualextension
        method: DELETE
        description: Delete a Virtual Extension
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: extensionId
          in: path
          type: string
          description: ID of the virtual extension.
          required: true
        - name: orgId
          in: query
          type: string
          description: Unique identifier for the organization.
    authentication:
      type: bearer
      token: '{{env.WEBEX_API_KEY}}'
  exposes:
  - type: rest
    namespace: cloud-calling-features-virtual-extensions-rest
    port: 8080
    description: 'REST adapter for Webex Cloud Calling — Features: Virtual Extensions. One Spectral-compliant resource per
      consumed operation, prefixed with /v1.'
    resources:
    - path: /v1/telephony/config/virtualextensionranges
      name: telephony-config-virtualextensionranges
      description: REST surface for telephony-config-virtualExtensionRanges.
      operations:
      - method: POST
        name: createavirtualextensionrange
        description: Create a Virtual Extension Range
        call: cloud-calling-features-virtual-extensions.createavirtualextensionrange
        with:
          orgId: rest.orgId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: getalistofavirtualextensionrange
        description: Get a list of a Virtual Extension Range
        call: cloud-calling-features-virtual-extensions.getalistofavirtualextensionrange
        with:
          orgId: rest.orgId
          max: rest.max
          start: rest.start
          order: rest.order
          name: rest.name
          prefix: rest.prefix
          locationId: rest.locationId
          orgLevelOnly: rest.orgLevelOnly
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/telephony/config/virtualextensionranges/actions/validate/invoke
      name: telephony-config-virtualextensionranges-actions-validate-invoke
      description: REST surface for telephony-config-virtualExtensionRanges-actions-validate-invoke.
      operations:
      - method: POST
        name: validatetheprefixandextensionpatternforavirtualextensionrange
        description: Validate the prefix and extension pattern for a Virtual Extension Range
        call: cloud-calling-features-virtual-extensions.validatetheprefixandextensionpatternforavirtualextensionrange
        with:
          orgId: rest.orgId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/telephony/config/virtualextensionranges/{extensionrangeid}
      name: telephony-config-virtualextensionranges-extensionrangeid
      description: REST surface for telephony-config-virtualExtensionRanges-extensionRangeId.
      operations:
      - method: GET
        name: getdetailsofavirtualextensionrange
        description: Get details of a Virtual Extension Range
        call: cloud-calling-features-virtual-extensions.getdetailsofavirtualextensionrange
        with:
          extensionRangeId: rest.extensionRangeId
          orgId: rest.orgId
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteavirtualextensionrange
        description: Delete a Virtual Extension Range
        call: cloud-calling-features-virtual-extensions.deleteavirtualextensionrange
        with:
          extensionRangeId: rest.extensionRangeId
          orgId: rest.orgId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/telephony/config/virtualextensionranges/{extensionrangeid}
      name: telephony-config-virtualextensionranges-extensionrangeid
      description: REST surface for telephony-config-virtualExtensionRanges-extensionRangeId.
      operations:
      - method: PUT
        name: modifyvirtualextensionrange
        description: Modify Virtual Extension Range
        call: cloud-calling-features-virtual-extensions.modifyvirtualextensionrange
        with:
          extensionRangeId: rest.extensionRangeId
          orgId: rest.orgId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/telephony/config/virtualextensions
      name: telephony-config-virtualextensions
      description: REST surface for telephony-config-virtualExtensions.
      operations:
      - method: POST
        name: createavirtualextension
        description: Create a Virtual Extension
        call: cloud-calling-features-virtual-extensions.createavirtualextension
        with:
          orgId: rest.orgId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: readthelistofvirtualextensions
        description: Read the List of Virtual Extensions
        call: cloud-calling-features-virtual-extensions.readthelistofvirtualextensions
        with:
          orgId: rest.orgId
          max: rest.max
          start: rest.start
          order: rest.order
          extension: rest.extension
          phoneNumber: rest.phoneNumber
          name: rest.name
          locationName: rest.locationName
          locationId: rest.locationId
          orgLevelOnly: rest.orgLevelOnly
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/telephony/config/virtualextensions/actions/validatenumbers/invoke
      name: telephony-config-virtualextensions-actions-validatenumbers-invoke
      description: REST surface for telephony-config-virtualExtensions-actions-validateNumbers-invoke.
      operations:
      - method: POST
        name: validateanexternalphonenumber
        description: Validate an external phone number
        call: cloud-calling-features-virtual-extensions.validateanexternalphonenumber
        with:
          orgId: rest.orgId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/telephony/config/virtualextensions/settings
      name: telephony-config-virtualextensions-settings
      description: REST surface for telephony-config-virtualExtensions-settings.
      operations:
      - method: GET
        name: getvirtualextensionsettings
        description: Get Virtual extension settings
        call: cloud-calling-features-virtual-extensions.getvirtualextensionsettings
        with:
          orgId: rest.orgId
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: modifyvirtualextensionsettings
        description: Modify Virtual Extension Settings
        call: cloud-calling-features-virtual-extensions.modifyvirtualextensionsettings
        with:
          orgId: rest.orgId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/telephony/config/virtualextensions/{extensionid}
      name: telephony-config-virtualextensions-extensionid
      description: REST surface for telephony-config-virtualExtensions-extensionId.
      operations:
      - method: GET
        name: getavirtualextension
        description: Get a Virtual Extension
        call: cloud-calling-features-virtual-extensions.getavirtualextension
        with:
          extensionId: rest.extensionId
          orgId: rest.orgId
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: updateavirtualextension
        description: Update a Virtual Extension
        call: cloud-calling-features-virtual-extensions.updateavirtualextension
        with:
          extensionId: rest.extensionId
          orgId: rest.orgId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteavirtualextension
        description: Delete a Virtual Extension
        call: cloud-calling-features-virtual-extensions.deleteavirtualextension
        with:
          extensionId: rest.extensionId
          orgId: rest.orgId
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: cloud-calling-features-virtual-extensions-mcp
    port: 9090
    transport: http
    description: 'MCP adapter for Webex Cloud Calling — Features: Virtual Extensions. One tool per consumed operation, routed
      inline through this capability''s consumes block.'
    tools:
    - name: create-virtual-extension-range
      description: Create a Virtual Extension Range
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: cloud-calling-features-virtual-extensions.createavirtualextensionrange
      with:
        orgId: tools.orgId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: get-list-virtual-extension-range
      description: Get a list of a Virtual Extension Range
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: cloud-calling-features-virtual-extensions.getalistofavirtualextensionrange
      with:
        orgId: tools.orgId
        max: tools.max
        start: tools.start
        order: tools.order
        name: tools.name
        prefix: tools.prefix
        locationId: tools.locationId
        orgLevelOnly: tools.orgLevelOnly
      outputParameters:
      - type: object
        mapping: $.
    - name: validate-prefix-and-extension-pattern
      description: Validate the prefix and extension pattern for a Virtual Extension Range
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: cloud-calling-features-virtual-extensions.validatetheprefixandextensionpatternforavirtualextensionrange
      with:
        orgId: tools.orgId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: get-details-virtual-extension-range
      description: Get details of a Virtual Extension Range
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: cloud-calling-features-virtual-extensions.getdetailsofavirtualextensionrange
      with:
        extensionRangeId: tools.extensionRangeId
        orgId: tools.orgId
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-virtual-extension-range
      description: Delete a Virtual Extension Range
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: cloud-calling-features-virtual-extensions.deleteavirtualextensionrange
      with:
        extensionRangeId: tools.extensionRangeId
        orgId: tools.orgId
      outputParameters:
      - type: object
        mapping: $.
    - name: modify-virtual-extension-range
      description: Modify Virtual Extension Range
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: cloud-calling-features-virtual-extensions.modifyvirtualextensionrange
      with:
        extensionRangeId: tools.extensionRangeId
        orgId: tools.orgId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: create-virtual-extension
      description: Create a Virtual Extension
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: cloud-calling-features-virtual-extensions.createavirtualextension
      with:
        orgId: tools.orgId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: read-list-virtual-extensions
      description: Read the List of Virtual Extensions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: cloud-calling-features-virtual-extensions.readthelistofvirtualextensions
      with:
        orgId: tools.orgId
        max: tools.max
        start: tools.start
        order: tools.order
        extension: tools.extension
        phoneNumber: tools.phoneNumber
        name: tools.name
        locationName: tools.locationName
        locationId: tools.locationId
        orgLevelOnly: tools.orgLevelOnly
      outputParameters:
      - type: object
        mapping: $.
    - name: validate-external-phone-number
      description: Validate an external phone number
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: cloud-calling-features-virtual-extensions.validateanexternalphonenumber
      with:
        orgId: tools.orgId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: get-virtual-extension-settings
      description: Get Virtual extension settings
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: cloud-calling-features-virtual-extensions.getvirtualextensionsettings
      with:
        orgId: tools.orgId
      outputParameters:
      - type: object
        mapping: $.
    - name: modify-virtual-extension-settings
      description: Modify Virtual Extension Settings
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: cloud-calling-features-virtual-extensions.modifyvirtualextensionsettings
      with:
        orgId: tools.orgId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: get-virtual-extension
      description: Get a Virtual Extension
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: cloud-calling-features-virtual-extensions.getavirtualextension
      with:
        extensionId: tools.extensionId
        orgId: tools.orgId
      outputParameters:
      - type: object
        mapping: $.
    - name: update-virtual-extension
      description: Update a Virtual Extension
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: cloud-calling-features-virtual-extensions.updateavirtualextension
      with:
        extensionId: tools.extensionId
        orgId: tools.orgId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-virtual-extension
      description: Delete a Virtual Extension
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: cloud-calling-features-virtual-extensions.deleteavirtualextension
      with:
        extensionId: tools.extensionId
        orgId: tools.orgId
      outputParameters:
      - type: object
        mapping: $.