naftiko: 1.0.0-alpha2 info: label: Webex Cloud Calling — Call Controls description: 'Webex Cloud Calling — Call Controls. 29 operations. Lead operation: List Calls. Self-contained Naftiko capability covering one Webex business surface.' tags: - Webex - Call Controls 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-call-controls baseUri: '' description: Webex Cloud Calling — Call Controls 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-members-memberId-answer path: /telephony/calls/members/{memberId}/answer operations: - name: answerbymemberid method: POST description: Answer by Member ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: memberId in: path type: string description: 'Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line' required: true - name: orgId in: query type: string description: 'Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or ' - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-members-memberId-calls path: /telephony/calls/members/{memberId}/calls operations: - name: listcallsbymemberid method: GET description: List Calls by Member ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: memberId in: path type: string description: 'Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line' required: true - name: orgId in: query type: string description: 'Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or ' - name: telephony-calls-members-memberId-calls-callId path: /telephony/calls/members/{memberId}/calls/{callId} operations: - name: getcalldetailsbymemberid method: GET description: Get Call Details by Member ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: memberId in: path type: string description: 'Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line' required: true - name: callId in: path type: string description: The call identifier of the call. required: true - name: orgId in: query type: string description: 'Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or ' - name: telephony-calls-members-memberId-dial path: /telephony/calls/members/{memberId}/dial operations: - name: dialbymemberid method: POST description: Dial by Member ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: memberId in: path type: string description: 'Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line' required: true - name: orgId in: query type: string description: 'Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or ' - name: body in: body type: object description: Request body (JSON). required: false - name: telephony-calls-members-memberId-hangup path: /telephony/calls/members/{memberId}/hangup operations: - name: hangupbymemberid method: POST description: Hangup by Member ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: memberId in: path type: string description: 'Unique identifier for the member. Member ID can be one of the following: person, workspace, or virtual line' required: true - name: orgId in: query type: string description: 'Id of the organization to which the member belongs. If not provided, the orgId of the Service App is used. If provided, the organization must be the same as or ' - 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. authentication: type: bearer token: '{{env.WEBEX_API_KEY}}' exposes: - type: rest namespace: cloud-calling-call-controls-rest port: 8080 description: REST adapter for Webex Cloud Calling — Call Controls. 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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.hold with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/members/{memberid}/answer name: telephony-calls-members-memberid-answer description: REST surface for telephony-calls-members-memberId-answer. operations: - method: POST name: answerbymemberid description: Answer by Member ID call: cloud-calling-call-controls.answerbymemberid with: memberId: rest.memberId orgId: rest.orgId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/members/{memberid}/calls name: telephony-calls-members-memberid-calls description: REST surface for telephony-calls-members-memberId-calls. operations: - method: GET name: listcallsbymemberid description: List Calls by Member ID call: cloud-calling-call-controls.listcallsbymemberid with: memberId: rest.memberId orgId: rest.orgId outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/members/{memberid}/calls/{callid} name: telephony-calls-members-memberid-calls-callid description: REST surface for telephony-calls-members-memberId-calls-callId. operations: - method: GET name: getcalldetailsbymemberid description: Get Call Details by Member ID call: cloud-calling-call-controls.getcalldetailsbymemberid with: memberId: rest.memberId callId: rest.callId orgId: rest.orgId outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/members/{memberid}/dial name: telephony-calls-members-memberid-dial description: REST surface for telephony-calls-members-memberId-dial. operations: - method: POST name: dialbymemberid description: Dial by Member ID call: cloud-calling-call-controls.dialbymemberid with: memberId: rest.memberId orgId: rest.orgId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/telephony/calls/members/{memberid}/hangup name: telephony-calls-members-memberid-hangup description: REST surface for telephony-calls-members-memberId-hangup. operations: - method: POST name: hangupbymemberid description: Hangup by Member ID call: cloud-calling-call-controls.hangupbymemberid with: memberId: rest.memberId orgId: rest.orgId 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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.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-call-controls.getcalldetails with: callId: rest.callId lineOwnerId: rest.lineOwnerId outputParameters: - type: object mapping: $. - type: mcp namespace: cloud-calling-call-controls-mcp port: 9090 transport: http description: MCP adapter for Webex Cloud Calling — Call Controls. 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-call-controls.listcalls with: lineOwnerId: tools.lineOwnerId outputParameters: - type: object mapping: $. - name: answer description: Answer hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.answer with: body: tools.body outputParameters: - type: object mapping: $. - name: barge description: Barge In hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.bargein with: body: tools.body outputParameters: - type: object mapping: $. - name: dial description: Dial hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.dial with: body: tools.body outputParameters: - type: object mapping: $. - name: divert description: Divert hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.divert with: body: tools.body outputParameters: - type: object mapping: $. - name: hangup description: Hangup hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.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-call-controls.listcallhistory with: type: tools.type outputParameters: - type: object mapping: $. - name: hold description: Hold hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.hold with: body: tools.body outputParameters: - type: object mapping: $. - name: answer-member-id description: Answer by Member ID hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.answerbymemberid with: memberId: tools.memberId orgId: tools.orgId body: tools.body outputParameters: - type: object mapping: $. - name: list-calls-member-id description: List Calls by Member ID hints: readOnly: true destructive: false idempotent: true call: cloud-calling-call-controls.listcallsbymemberid with: memberId: tools.memberId orgId: tools.orgId outputParameters: - type: object mapping: $. - name: get-call-details-member-id description: Get Call Details by Member ID hints: readOnly: true destructive: false idempotent: true call: cloud-calling-call-controls.getcalldetailsbymemberid with: memberId: tools.memberId callId: tools.callId orgId: tools.orgId outputParameters: - type: object mapping: $. - name: dial-member-id description: Dial by Member ID hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.dialbymemberid with: memberId: tools.memberId orgId: tools.orgId body: tools.body outputParameters: - type: object mapping: $. - name: hangup-member-id description: Hangup by Member ID hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.hangupbymemberid with: memberId: tools.memberId orgId: tools.orgId body: tools.body outputParameters: - type: object mapping: $. - name: mute description: Mute hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.mute with: body: tools.body outputParameters: - type: object mapping: $. - name: park description: Park hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.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-call-controls.pauserecording with: body: tools.body outputParameters: - type: object mapping: $. - name: pickup description: Pickup hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.pickup with: body: tools.body outputParameters: - type: object mapping: $. - name: pull description: Pull hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.pull with: body: tools.body outputParameters: - type: object mapping: $. - name: push description: Push hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.push with: body: tools.body outputParameters: - type: object mapping: $. - name: reject description: Reject hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.reject with: body: tools.body outputParameters: - type: object mapping: $. - name: resume description: Resume hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.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-call-controls.resumerecording with: body: tools.body outputParameters: - type: object mapping: $. - name: retrieve description: Retrieve hints: readOnly: true destructive: false idempotent: false call: cloud-calling-call-controls.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-call-controls.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-call-controls.stoprecording with: body: tools.body outputParameters: - type: object mapping: $. - name: transfer description: Transfer hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.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-call-controls.transmitdtmf with: body: tools.body outputParameters: - type: object mapping: $. - name: unmute description: Unmute hints: readOnly: false destructive: false idempotent: false call: cloud-calling-call-controls.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-call-controls.getcalldetails with: callId: tools.callId lineOwnerId: tools.lineOwnerId outputParameters: - type: object mapping: $.