naftiko: 1.0.0-alpha2 info: label: Webex Cloud Calling — External Voicemail description: 'Webex Cloud Calling — External Voicemail. 25 operations. Lead operation: List Calls. Self-contained Naftiko capability covering one Webex business surface.' tags: - Webex - External Voicemail 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-external-voicemail baseUri: '' description: Webex Cloud Calling — External Voicemail business capability. Self-contained, no shared references. resources: - name: telephony-calls path: /telephony/calls operations: - name: listcalls method: GET description: List Calls outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: lineOwnerId in: query type: string description: The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API. - name: telephony-calls-answer path: /telephony/calls/answer operations: - name: answer method: POST description: Answer outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-bargeIn path: /telephony/calls/bargeIn operations: - name: bargein method: POST description: Barge In outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-dial path: /telephony/calls/dial operations: - name: dial method: POST description: Dial outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-divert path: /telephony/calls/divert operations: - name: divert method: POST description: Divert outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-hangup path: /telephony/calls/hangup operations: - name: hangup method: POST description: Hangup outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-history path: /telephony/calls/history operations: - name: listcallhistory method: GET description: List Call History outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: type in: query type: string description: The type of call history records to retrieve. If not specified, then all call history records are retrieved. - name: telephony-calls-hold path: /telephony/calls/hold operations: - name: hold method: POST description: Hold outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-mute path: /telephony/calls/mute operations: - name: mute method: POST description: Mute outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-park path: /telephony/calls/park operations: - name: park method: POST description: Park outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-pauseRecording path: /telephony/calls/pauseRecording operations: - name: pauserecording method: POST description: Pause Recording outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-pickup path: /telephony/calls/pickup operations: - name: pickup method: POST description: Pickup outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-pull path: /telephony/calls/pull operations: - name: pull method: POST description: Pull outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-push path: /telephony/calls/push operations: - name: push method: POST description: Push outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-reject path: /telephony/calls/reject operations: - name: reject method: POST description: Reject outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-resume path: /telephony/calls/resume operations: - name: resume method: POST description: Resume outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-resumeRecording path: /telephony/calls/resumeRecording operations: - name: resumerecording method: POST description: Resume Recording outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-retrieve path: /telephony/calls/retrieve operations: - name: retrieve method: POST description: Retrieve outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-startRecording path: /telephony/calls/startRecording operations: - name: startrecording method: POST description: Start Recording outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-stopRecording path: /telephony/calls/stopRecording operations: - name: stoprecording method: POST description: Stop Recording outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-transfer path: /telephony/calls/transfer operations: - name: transfer method: POST description: Transfer outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-transmitDtmf path: /telephony/calls/transmitDtmf operations: - name: transmitdtmf method: POST description: Transmit DTMF outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-unmute path: /telephony/calls/unmute operations: - name: unmute method: POST description: Unmute outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-callId path: /telephony/calls/{callId} operations: - name: getcalldetails method: GET description: Get Call Details outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: callId in: path type: string description: The call identifier of the call. required: true - name: lineOwnerId in: query type: string description: The ID of a user, workspace, or virtual line for which there is a secondary line on a device owned by the user invoking the API. - name: telephony-externalVoicemail-mwi path: /telephony/externalVoicemail/mwi operations: - name: postexternalvoicemailmwi method: POST description: Set or Clear Message Waiting Indicator (MWI) Status outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: query type: string description: Unique identifier for the user or workspace. required: true - name: orgId in: query type: string description: 'Id of the organization to which the user or workspace belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the ' - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.WEBEX_API_KEY}}' exposes: - type: rest namespace: cloud-calling-external-voicemail-rest port: 8080 description: REST adapter for Webex Cloud Calling — External Voicemail. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/telephony/calls name: telephony-calls description: REST surface for telephony-calls. operations: - method: GET name: listcalls description: List Calls call: cloud-calling-external-voicemail.listcalls with: lineOwnerId: rest.lineOwnerId outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/answer name: telephony-calls-answer description: REST surface for telephony-calls-answer. operations: - method: POST name: answer description: Answer call: cloud-calling-external-voicemail.answer with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/bargein name: telephony-calls-bargein description: REST surface for telephony-calls-bargeIn. operations: - method: POST name: bargein description: Barge In call: cloud-calling-external-voicemail.bargein with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/dial name: telephony-calls-dial description: REST surface for telephony-calls-dial. operations: - method: POST name: dial description: Dial call: cloud-calling-external-voicemail.dial with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/divert name: telephony-calls-divert description: REST surface for telephony-calls-divert. operations: - method: POST name: divert description: Divert call: cloud-calling-external-voicemail.divert with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/hangup name: telephony-calls-hangup description: REST surface for telephony-calls-hangup. operations: - method: POST name: hangup description: Hangup call: cloud-calling-external-voicemail.hangup with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/history name: telephony-calls-history description: REST surface for telephony-calls-history. operations: - method: GET name: listcallhistory description: List Call History call: cloud-calling-external-voicemail.listcallhistory with: type: rest.type outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/hold name: telephony-calls-hold description: REST surface for telephony-calls-hold. operations: - method: POST name: hold description: Hold call: cloud-calling-external-voicemail.hold with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/mute name: telephony-calls-mute description: REST surface for telephony-calls-mute. operations: - method: POST name: mute description: Mute call: cloud-calling-external-voicemail.mute with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/park name: telephony-calls-park description: REST surface for telephony-calls-park. operations: - method: POST name: park description: Park call: cloud-calling-external-voicemail.park with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/pauserecording name: telephony-calls-pauserecording description: REST surface for telephony-calls-pauseRecording. operations: - method: POST name: pauserecording description: Pause Recording call: cloud-calling-external-voicemail.pauserecording with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/pickup name: telephony-calls-pickup description: REST surface for telephony-calls-pickup. operations: - method: POST name: pickup description: Pickup call: cloud-calling-external-voicemail.pickup with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/pull name: telephony-calls-pull description: REST surface for telephony-calls-pull. operations: - method: POST name: pull description: Pull call: cloud-calling-external-voicemail.pull with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/push name: telephony-calls-push description: REST surface for telephony-calls-push. operations: - method: POST name: push description: Push call: cloud-calling-external-voicemail.push with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/reject name: telephony-calls-reject description: REST surface for telephony-calls-reject. operations: - method: POST name: reject description: Reject call: cloud-calling-external-voicemail.reject with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/resume name: telephony-calls-resume description: REST surface for telephony-calls-resume. operations: - method: POST name: resume description: Resume call: cloud-calling-external-voicemail.resume with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/resumerecording name: telephony-calls-resumerecording description: REST surface for telephony-calls-resumeRecording. operations: - method: POST name: resumerecording description: Resume Recording call: cloud-calling-external-voicemail.resumerecording with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/retrieve name: telephony-calls-retrieve description: REST surface for telephony-calls-retrieve. operations: - method: POST name: retrieve description: Retrieve call: cloud-calling-external-voicemail.retrieve with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/startrecording name: telephony-calls-startrecording description: REST surface for telephony-calls-startRecording. operations: - method: POST name: startrecording description: Start Recording call: cloud-calling-external-voicemail.startrecording with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/stoprecording name: telephony-calls-stoprecording description: REST surface for telephony-calls-stopRecording. operations: - method: POST name: stoprecording description: Stop Recording call: cloud-calling-external-voicemail.stoprecording with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/transfer name: telephony-calls-transfer description: REST surface for telephony-calls-transfer. operations: - method: POST name: transfer description: Transfer call: cloud-calling-external-voicemail.transfer with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/transmitdtmf name: telephony-calls-transmitdtmf description: REST surface for telephony-calls-transmitDtmf. operations: - method: POST name: transmitdtmf description: Transmit DTMF call: cloud-calling-external-voicemail.transmitdtmf with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/unmute name: telephony-calls-unmute description: REST surface for telephony-calls-unmute. operations: - method: POST name: unmute description: Unmute call: cloud-calling-external-voicemail.unmute with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/{callid} name: telephony-calls-callid description: REST surface for telephony-calls-callId. operations: - method: GET name: getcalldetails description: Get Call Details call: cloud-calling-external-voicemail.getcalldetails with: callId: rest.callId lineOwnerId: rest.lineOwnerId outputParameters: - type: object mapping: $. - path: /v1/telephony/externalvoicemail/mwi name: telephony-externalvoicemail-mwi description: REST surface for telephony-externalVoicemail-mwi. operations: - method: POST name: postexternalvoicemailmwi description: Set or Clear Message Waiting Indicator (MWI) Status call: cloud-calling-external-voicemail.postexternalvoicemailmwi with: id: rest.id orgId: rest.orgId body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: cloud-calling-external-voicemail-mcp port: 9090 transport: http description: MCP adapter for Webex Cloud Calling — External Voicemail. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-calls description: List Calls hints: readOnly: true destructive: false idempotent: true call: cloud-calling-external-voicemail.listcalls with: lineOwnerId: tools.lineOwnerId outputParameters: - type: object mapping: $. - name: answer description: Answer hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.answer with: body: tools.body outputParameters: - type: object mapping: $. - name: barge description: Barge In hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.bargein with: body: tools.body outputParameters: - type: object mapping: $. - name: dial description: Dial hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.dial with: body: tools.body outputParameters: - type: object mapping: $. - name: divert description: Divert hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.divert with: body: tools.body outputParameters: - type: object mapping: $. - name: hangup description: Hangup hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.hangup with: body: tools.body outputParameters: - type: object mapping: $. - name: list-call-history description: List Call History hints: readOnly: true destructive: false idempotent: true call: cloud-calling-external-voicemail.listcallhistory with: type: tools.type outputParameters: - type: object mapping: $. - name: hold description: Hold hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.hold with: body: tools.body outputParameters: - type: object mapping: $. - name: mute description: Mute hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.mute with: body: tools.body outputParameters: - type: object mapping: $. - name: park description: Park hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.park with: body: tools.body outputParameters: - type: object mapping: $. - name: pause-recording description: Pause Recording hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.pauserecording with: body: tools.body outputParameters: - type: object mapping: $. - name: pickup description: Pickup hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.pickup with: body: tools.body outputParameters: - type: object mapping: $. - name: pull description: Pull hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.pull with: body: tools.body outputParameters: - type: object mapping: $. - name: push description: Push hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.push with: body: tools.body outputParameters: - type: object mapping: $. - name: reject description: Reject hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.reject with: body: tools.body outputParameters: - type: object mapping: $. - name: resume description: Resume hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.resume with: body: tools.body outputParameters: - type: object mapping: $. - name: resume-recording description: Resume Recording hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.resumerecording with: body: tools.body outputParameters: - type: object mapping: $. - name: retrieve description: Retrieve hints: readOnly: true destructive: false idempotent: false call: cloud-calling-external-voicemail.retrieve with: body: tools.body outputParameters: - type: object mapping: $. - name: start-recording description: Start Recording hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.startrecording with: body: tools.body outputParameters: - type: object mapping: $. - name: stop-recording description: Stop Recording hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.stoprecording with: body: tools.body outputParameters: - type: object mapping: $. - name: transfer description: Transfer hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.transfer with: body: tools.body outputParameters: - type: object mapping: $. - name: transmit-dtmf description: Transmit DTMF hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.transmitdtmf with: body: tools.body outputParameters: - type: object mapping: $. - name: unmute description: Unmute hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.unmute with: body: tools.body outputParameters: - type: object mapping: $. - name: get-call-details description: Get Call Details hints: readOnly: true destructive: false idempotent: true call: cloud-calling-external-voicemail.getcalldetails with: callId: tools.callId lineOwnerId: tools.lineOwnerId outputParameters: - type: object mapping: $. - name: set-clear-message-waiting-indicator description: Set or Clear Message Waiting Indicator (MWI) Status hints: readOnly: false destructive: false idempotent: false call: cloud-calling-external-voicemail.postexternalvoicemailmwi with: id: tools.id orgId: tools.orgId body: tools.body outputParameters: - type: object mapping: $.