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.
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
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: $.