@webex/calling 3.12.0-next.70 → 3.12.0-next.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -121,9 +121,11 @@ var CallRecording = exports.CallRecording = /*#__PURE__*/function (_Eventing) {
121
121
  }
122
122
 
123
123
  /**
124
- * Permanently deletes a single recording. Per the API the recording cannot be recovered.
125
- * @param recordingId - The recording id (`id`) to delete.
126
- * @param options - Optional `reason`/`comment`, only required for Compliance Officer deletions.
124
+ * Moves a single recording to the recycle bin (soft delete) via
125
+ * `POST /convergedRecordings/softDelete`. Requires `spark:recordings_write` on the access token;
126
+ * the recording can be restored from the recycle bin via the platform restore API.
127
+ * @param recordingId - The recording id (`id`) to move to the recycle bin.
128
+ * @param options - Deprecated. Ignored (compliance permanent delete is not exposed).
127
129
  */
128
130
  }, {
129
131
  key: "deleteRecording",
@@ -1 +1 @@
1
- {"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_types2","_impl","_WxcCallRecordingConnector","_constants2","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","CallRecording","exports","_Eventing","webex","logger","_this","_classCallCheck2","_defineProperty2","sdkConnector","SDKConnector","getWebex","setWebex","callingBackend","getCallingBackEnd","initializeBackendConnector","forwardRecordingEvents","log","setLogger","level","CALL_RECORDING_FILE","_inherits2","_createClass2","key","value","info","METHOD_START_MESSAGE","file","method","METHODS","INITIALIZE_BACKEND_CONNECTOR","CALLING_BACKEND","WXC","backendConnector","WxcCallRecordingConnector","Error","_this2","on","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","event","emit","CALL_RECORDING_UPDATED","CALL_RECORDING_DELETED","getCallRecording","request","_deleteRecording","_asyncToGenerator2","_regenerator","mark","_callee","recordingId","options","wrap","_context","prev","next","abrupt","deleteRecording","stop","_x","_x2","arguments","Eventing","createCallRecordingClient"],"sources":["CallRecording.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {CALLING_BACKEND} from '../common/types';\nimport log from '../Logger';\nimport {getCallingBackEnd} from '../common/Utils';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {CallRecordingEventTypes, COMMON_EVENT_KEYS, RecordingEvent} from '../Events/types';\nimport {Eventing} from '../Events/impl';\nimport {\n DeleteRecordingOptions,\n GetCallRecordingRequest,\n ICallRecording,\n LoggerInterface,\n RecordingDeleteResponse,\n RecordingResponseFor,\n} from './types';\nimport {WxcCallRecordingConnector} from './WxcCallRecordingConnector';\nimport {CALL_RECORDING_FILE, METHODS} from './constants';\n\n/**\n * `CallRecording` is the backend-agnostic facade for Post Call Recording. It selects a\n * backend-specific connector based on the resolved calling backend and delegates all read/delete\n * operations to it, while re-emitting the connector's recording lifecycle events.\n *\n * Post Call Recording (`convergedRecordings`) is a Webex Calling cloud capability, so only the\n * Webex Calling (WXC) backend is supported today; other backends (BWRKS/UCM/INVALID) are rejected,\n * following the same convention used by the Voicemail client. Adding support for another backend is\n * a matter of dropping in a new connector and a `case` here — no consumer-facing changes required.\n *\n * @example\n * ```javascript\n * const callRecording = createCallRecordingClient(webex, logger);\n * ```\n */\nexport class CallRecording extends Eventing<CallRecordingEventTypes> implements ICallRecording {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callingBackend: CALLING_BACKEND;\n\n private backendConnector!: ICallRecording;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, public logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n\n this.callingBackend = getCallingBackEnd(this.webex);\n this.initializeBackendConnector();\n this.forwardRecordingEvents();\n log.setLogger(logger.level, CALL_RECORDING_FILE);\n }\n\n /**\n * Sets up the backend-specific recording connector based on the resolved calling backend.\n */\n private initializeBackendConnector() {\n log.info(METHOD_START_MESSAGE, {\n file: CALL_RECORDING_FILE,\n method: METHODS.INITIALIZE_BACKEND_CONNECTOR,\n });\n\n switch (this.callingBackend) {\n case CALLING_BACKEND.WXC: {\n this.backendConnector = new WxcCallRecordingConnector(this.webex, this.logger);\n break;\n }\n\n default: {\n throw new Error('Calling backend is not identified, exiting....');\n }\n }\n }\n\n /**\n * Re-emits the active connector's recording lifecycle events as facade events so consumers can\n * subscribe on the `CallRecording` instance regardless of the underlying backend.\n */\n private forwardRecordingEvents() {\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event)\n );\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, event)\n );\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event)\n );\n }\n\n /**\n * Reads Post Call Recordings, delegating to the active backend connector. The operation is\n * selected by the request `type` and the response type is inferred per request.\n * @param request - The discriminated read request.\n */\n public getCallRecording<T extends GetCallRecordingRequest>(\n request: T\n ): Promise<RecordingResponseFor<T>> {\n return this.backendConnector.getCallRecording(request);\n }\n\n /**\n * Permanently deletes a single recording. Per the API the recording cannot be recovered.\n * @param recordingId - The recording id (`id`) to delete.\n * @param options - Optional `reason`/`comment`, only required for Compliance Officer deletions.\n */\n public async deleteRecording(\n recordingId: string,\n options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse> {\n return this.backendConnector.deleteRecording(recordingId, options);\n }\n}\n\n/**\n * Creates a `CallRecording` client instance for accessing Post Call Recording APIs.\n *\n * @param {WebexSDK} webex - `Webex SDK` instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createCallRecordingClient = (\n webex: WebexSDK,\n logger: LoggerInterface\n): ICallRecording => new CallRecording(webex, logger);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_types2","_impl","_WxcCallRecordingConnector","_constants2","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","CallRecording","exports","_Eventing","webex","logger","_this","_classCallCheck2","_defineProperty2","sdkConnector","SDKConnector","getWebex","setWebex","callingBackend","getCallingBackEnd","initializeBackendConnector","forwardRecordingEvents","log","setLogger","level","CALL_RECORDING_FILE","_inherits2","_createClass2","key","value","info","METHOD_START_MESSAGE","file","method","METHODS","INITIALIZE_BACKEND_CONNECTOR","CALLING_BACKEND","WXC","backendConnector","WxcCallRecordingConnector","Error","_this2","on","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","event","emit","CALL_RECORDING_UPDATED","CALL_RECORDING_DELETED","getCallRecording","request","_deleteRecording","_asyncToGenerator2","_regenerator","mark","_callee","recordingId","options","wrap","_context","prev","next","abrupt","deleteRecording","stop","_x","_x2","arguments","Eventing","createCallRecordingClient"],"sources":["CallRecording.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {CALLING_BACKEND} from '../common/types';\nimport log from '../Logger';\nimport {getCallingBackEnd} from '../common/Utils';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {CallRecordingEventTypes, COMMON_EVENT_KEYS, RecordingEvent} from '../Events/types';\nimport {Eventing} from '../Events/impl';\nimport {\n DeleteRecordingOptions,\n GetCallRecordingRequest,\n ICallRecording,\n LoggerInterface,\n RecordingDeleteResponse,\n RecordingResponseFor,\n} from './types';\nimport {WxcCallRecordingConnector} from './WxcCallRecordingConnector';\nimport {CALL_RECORDING_FILE, METHODS} from './constants';\n\n/**\n * `CallRecording` is the backend-agnostic facade for Post Call Recording. It selects a\n * backend-specific connector based on the resolved calling backend and delegates all read/delete\n * operations to it, while re-emitting the connector's recording lifecycle events.\n *\n * Post Call Recording (`convergedRecordings`) is a Webex Calling cloud capability, so only the\n * Webex Calling (WXC) backend is supported today; other backends (BWRKS/UCM/INVALID) are rejected,\n * following the same convention used by the Voicemail client. Adding support for another backend is\n * a matter of dropping in a new connector and a `case` here — no consumer-facing changes required.\n *\n * @example\n * ```javascript\n * const callRecording = createCallRecordingClient(webex, logger);\n * ```\n */\nexport class CallRecording extends Eventing<CallRecordingEventTypes> implements ICallRecording {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callingBackend: CALLING_BACKEND;\n\n private backendConnector!: ICallRecording;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, public logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n\n this.callingBackend = getCallingBackEnd(this.webex);\n this.initializeBackendConnector();\n this.forwardRecordingEvents();\n log.setLogger(logger.level, CALL_RECORDING_FILE);\n }\n\n /**\n * Sets up the backend-specific recording connector based on the resolved calling backend.\n */\n private initializeBackendConnector() {\n log.info(METHOD_START_MESSAGE, {\n file: CALL_RECORDING_FILE,\n method: METHODS.INITIALIZE_BACKEND_CONNECTOR,\n });\n\n switch (this.callingBackend) {\n case CALLING_BACKEND.WXC: {\n this.backendConnector = new WxcCallRecordingConnector(this.webex, this.logger);\n break;\n }\n\n default: {\n throw new Error('Calling backend is not identified, exiting....');\n }\n }\n }\n\n /**\n * Re-emits the active connector's recording lifecycle events as facade events so consumers can\n * subscribe on the `CallRecording` instance regardless of the underlying backend.\n */\n private forwardRecordingEvents() {\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event)\n );\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, event)\n );\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event)\n );\n }\n\n /**\n * Reads Post Call Recordings, delegating to the active backend connector. The operation is\n * selected by the request `type` and the response type is inferred per request.\n * @param request - The discriminated read request.\n */\n public getCallRecording<T extends GetCallRecordingRequest>(\n request: T\n ): Promise<RecordingResponseFor<T>> {\n return this.backendConnector.getCallRecording(request);\n }\n\n /**\n * Moves a single recording to the recycle bin (soft delete) via\n * `POST /convergedRecordings/softDelete`. Requires `spark:recordings_write` on the access token;\n * the recording can be restored from the recycle bin via the platform restore API.\n * @param recordingId - The recording id (`id`) to move to the recycle bin.\n * @param options - Deprecated. Ignored (compliance permanent delete is not exposed).\n */\n public async deleteRecording(\n recordingId: string,\n options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse> {\n return this.backendConnector.deleteRecording(recordingId, options);\n }\n}\n\n/**\n * Creates a `CallRecording` client instance for accessing Post Call Recording APIs.\n *\n * @param {WebexSDK} webex - `Webex SDK` instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createCallRecordingClient = (\n webex: WebexSDK,\n logger: LoggerInterface\n): ICallRecording => new CallRecording(webex, logger);\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAN,OAAA;AASA,IAAAO,0BAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AAAyD,SAAAS,WAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,WAAAD,CAAA,OAAAE,gBAAA,CAAAC,OAAA,EAAAH,CAAA,OAAAI,2BAAA,CAAAD,OAAA,EAAAJ,CAAA,EAAAM,yBAAA,KAAAC,kBAAA,CAAAN,CAAA,EAAAC,CAAA,YAAAC,gBAAA,CAAAC,OAAA,EAAAJ,CAAA,EAAAQ,WAAA,IAAAP,CAAA,CAAAQ,KAAA,CAAAT,CAAA,EAAAE,CAAA;AAAA,SAAAI,0BAAA,cAAAN,CAAA,IAAAU,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAN,kBAAA,CAAAG,OAAA,iCAAAV,CAAA,aAAAM,yBAAA,YAAAA,0BAAA,aAAAN,CAAA,UAnBzD,kCACA;AAoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAdA,IAeac,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAAE,SAAA;EASxB;AACF;AACA;EACE,SAAAF,cAAYG,KAAe,EAASC,MAAuB,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAhB,OAAA,QAAAU,aAAA;IAC3DK,KAAA,GAAApB,UAAA,OAAAe,aAAA;IAAQ,IAAAO,gBAAA,CAAAjB,OAAA,EAAAe,KAAA;IAAA,IAAAE,gBAAA,CAAAjB,OAAA,EAAAe,KAAA;IAAA,IAAAE,gBAAA,CAAAjB,OAAA,EAAAe,KAAA;IAAA,IAAAE,gBAAA,CAAAjB,OAAA,EAAAe,KAAA;IAAAA,KAAA,CAD0BD,MAAuB,GAAvBA,MAAuB;IAEzDC,KAAA,CAAKG,YAAY,GAAGC,qBAAY;IAChC,IAAI,CAACJ,KAAA,CAAKG,YAAY,CAACE,QAAQ,CAAC,CAAC,EAAE;MACjCD,qBAAY,CAACE,QAAQ,CAACR,KAAK,CAAC;IAC9B;IACAE,KAAA,CAAKF,KAAK,GAAGE,KAAA,CAAKG,YAAY,CAACE,QAAQ,CAAC,CAAC;IAEzCL,KAAA,CAAKO,cAAc,GAAG,IAAAC,wBAAiB,EAACR,KAAA,CAAKF,KAAK,CAAC;IACnDE,KAAA,CAAKS,0BAA0B,CAAC,CAAC;IACjCT,KAAA,CAAKU,sBAAsB,CAAC,CAAC;IAC7BC,eAAG,CAACC,SAAS,CAACb,MAAM,CAACc,KAAK,EAAEC,+BAAmB,CAAC;IAAC,OAAAd,KAAA;EACnD;;EAEA;AACF;AACA;EAFE,IAAAe,UAAA,CAAA9B,OAAA,EAAAU,aAAA,EAAAE,SAAA;EAAA,WAAAmB,aAAA,CAAA/B,OAAA,EAAAU,aAAA;IAAAsB,GAAA;IAAAC,KAAA,EAGA,SAAQT,0BAA0BA,CAAA,EAAG;MACnCE,eAAG,CAACQ,IAAI,CAACC,+BAAoB,EAAE;QAC7BC,IAAI,EAAEP,+BAAmB;QACzBQ,MAAM,EAAEC,mBAAO,CAACC;MAClB,CAAC,CAAC;MAEF,QAAQ,IAAI,CAACjB,cAAc;QACzB,KAAKkB,sBAAe,CAACC,GAAG;UAAE;YACxB,IAAI,CAACC,gBAAgB,GAAG,IAAIC,oDAAyB,CAAC,IAAI,CAAC9B,KAAK,EAAE,IAAI,CAACC,MAAM,CAAC;YAC9E;UACF;QAEA;UAAS;YACP,MAAM,IAAI8B,KAAK,CAAC,gDAAgD,CAAC;UACnE;MACF;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAAZ,GAAA;IAAAC,KAAA,EAIA,SAAQR,sBAAsBA,CAAA,EAAG;MAAA,IAAAoB,MAAA;MAC/B,IAAI,CAACH,gBAAgB,CAACI,EAAE,CAACC,yBAAiB,CAACC,sBAAsB,EAAE,UAACC,KAAqB;QAAA,OACvFJ,MAAI,CAACK,IAAI,CAACH,yBAAiB,CAACC,sBAAsB,EAAEC,KAAK,CAAC;MAAA,CAC5D,CAAC;MACD,IAAI,CAACP,gBAAgB,CAACI,EAAE,CAACC,yBAAiB,CAACI,sBAAsB,EAAE,UAACF,KAAqB;QAAA,OACvFJ,MAAI,CAACK,IAAI,CAACH,yBAAiB,CAACI,sBAAsB,EAAEF,KAAK,CAAC;MAAA,CAC5D,CAAC;MACD,IAAI,CAACP,gBAAgB,CAACI,EAAE,CAACC,yBAAiB,CAACK,sBAAsB,EAAE,UAACH,KAAqB;QAAA,OACvFJ,MAAI,CAACK,IAAI,CAACH,yBAAiB,CAACK,sBAAsB,EAAEH,KAAK,CAAC;MAAA,CAC5D,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAjB,GAAA;IAAAC,KAAA,EAKA,SAAOoB,gBAAgBA,CACrBC,OAAU,EACwB;MAClC,OAAO,IAAI,CAACZ,gBAAgB,CAACW,gBAAgB,CAACC,OAAO,CAAC;IACxD;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAtB,GAAA;IAAAC,KAAA;MAAA,IAAAsB,gBAAA,OAAAC,kBAAA,CAAAxD,OAAA,eAAAyD,YAAA,CAAAzD,OAAA,CAAA0D,IAAA,CAOA,SAAAC,QACEC,WAAmB,EACnBC,OAAgC;QAAA,OAAAJ,YAAA,CAAAzD,OAAA,CAAA8D,IAAA,WAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAA,OAAAF,QAAA,CAAAG,MAAA,WAEzB,IAAI,CAACxB,gBAAgB,CAACyB,eAAe,CAACP,WAAW,EAAEC,OAAO,CAAC;YAAA;YAAA;cAAA,OAAAE,QAAA,CAAAK,IAAA;UAAA;QAAA,GAAAT,OAAA;MAAA,CACnE;MAAA,SALYQ,eAAeA,CAAAE,EAAA,EAAAC,GAAA;QAAA,OAAAf,gBAAA,CAAAlD,KAAA,OAAAkE,SAAA;MAAA;MAAA,OAAfJ,eAAe;IAAA;EAAA;AAAA,EAjFKK,cAAQ;AAyF3C;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,yBAAyB,GAAA9D,OAAA,CAAA8D,yBAAA,GAAG,SAA5BA,yBAAyBA,CACpC5D,KAAe,EACfC,MAAuB;EAAA,OACJ,IAAIJ,aAAa,CAACG,KAAK,EAAEC,MAAM,CAAC;AAAA","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
- var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
4
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
5
5
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
6
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
7
7
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
@@ -13,7 +13,6 @@ _Object$defineProperty(exports, "__esModule", {
13
13
  });
14
14
  exports.WxcCallRecordingConnector = void 0;
15
15
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
16
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
17
16
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
18
17
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
19
18
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
@@ -32,7 +31,7 @@ var _types2 = require("../Events/types");
32
31
  var _impl = require("../Events/impl");
33
32
  var _types3 = require("./types");
34
33
  var _constants2 = require("./constants");
35
- function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
34
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
36
35
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
37
36
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
38
37
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable dot-notation */ /* eslint-disable no-underscore-dangle */
@@ -495,16 +494,24 @@ var WxcCallRecordingConnector = exports.WxcCallRecordingConnector = /*#__PURE__*
495
494
  return getRecordingMetadata;
496
495
  }()
497
496
  /**
498
- * Permanently deletes a single recording. Per the API the recording cannot be recovered.
499
- * @param recordingId - The recording id (`id`) to delete.
500
- * @param options - Optional `reason`/`comment`, only required for Compliance Officer deletions.
497
+ * Moves a recording to the recycle bin (soft delete). Matches native Webex user delete:
498
+ * `POST /convergedRecordings/softDelete` with `recordingIds: [recordingId]`.
499
+ * Requires `spark:recordings_write` on the access token.
500
+ *
501
+ * Mercury emits `convergedRecordings.updated` + `eventSubType: TRASH`, which this connector
502
+ * surfaces as `callRecording:deleted`.
503
+ *
504
+ * @param recordingId - The recording id (`id`) to move to the recycle bin.
505
+ * @param _options - Deprecated. Ignored. Compliance permanent delete uses a separate API.
501
506
  */
502
507
  )
503
508
  }, {
504
509
  key: "deleteRecording",
505
510
  value: (function () {
506
- var _deleteRecording = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(recordingId, options) {
507
- var loggerContext, _response$headers4, url, body, response, responseDetails, errorInfo, _t5;
511
+ var _deleteRecording = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(recordingId,
512
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- kept for ICallRecording signature parity; soft delete ignores options
513
+ _options) {
514
+ var loggerContext, _response$headers4, url, response, responseDetails, errorInfo, _t5;
508
515
  return _regenerator.default.wrap(function (_context8) {
509
516
  while (1) switch (_context8.prev = _context8.next) {
510
517
  case 0:
@@ -514,22 +521,16 @@ var WxcCallRecordingConnector = exports.WxcCallRecordingConnector = /*#__PURE__*
514
521
  };
515
522
  _Logger.default.info("".concat(_constants.METHOD_START_MESSAGE, " with recordingId=").concat(recordingId), loggerContext);
516
523
  _context8.prev = 1;
517
- url = "".concat(this.recordingServiceUrl, "/").concat(_constants2.CONVERGED_RECORDINGS, "/").concat(recordingId);
518
- body = {};
519
- if (options !== null && options !== void 0 && options.reason) {
520
- body.reason = options.reason;
521
- }
522
- if (options !== null && options !== void 0 && options.comment) {
523
- body.comment = options.comment;
524
- }
524
+ url = "".concat(this.recordingServiceUrl, "/").concat(_constants2.CONVERGED_RECORDINGS, "/").concat(_constants2.SOFT_DELETE);
525
525
  _context8.next = 2;
526
- return this.webex.request(_objectSpread({
526
+ return this.webex.request({
527
527
  uri: url,
528
- method: _types.HTTP_METHODS.DELETE,
529
- service: _types.ALLOWED_SERVICES.HYDRA_DEVELOPER_API
530
- }, (0, _keys.default)(body).length > 0 ? {
531
- body: body
532
- } : {}));
528
+ method: _types.HTTP_METHODS.POST,
529
+ service: _types.ALLOWED_SERVICES.HYDRA_DEVELOPER_API,
530
+ body: {
531
+ recordingIds: [recordingId]
532
+ }
533
+ });
533
534
  case 2:
534
535
  response = _context8.sent;
535
536
  _Logger.default.log("Response trackingId: ".concat(response === null || response === void 0 ? void 0 : (_response$headers4 = response.headers) === null || _response$headers4 === void 0 ? void 0 : _response$headers4.trackingid), loggerContext);
@@ -538,7 +539,7 @@ var WxcCallRecordingConnector = exports.WxcCallRecordingConnector = /*#__PURE__*
538
539
  data: {},
539
540
  message: _constants.SUCCESS_MESSAGE
540
541
  };
541
- _Logger.default.log("Successfully deleted recording ".concat(recordingId), loggerContext);
542
+ _Logger.default.log("Successfully moved recording ".concat(recordingId, " to recycle bin"), loggerContext);
542
543
  return _context8.abrupt("return", responseDetails);
543
544
  case 3:
544
545
  _context8.prev = 3;
@@ -1 +1 @@
1
- {"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_types2","_impl","_types3","_constants2","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","WxcCallRecordingConnector","exports","_Eventing","webex","logger","_this$webex$internal$","_this$webex$internal$2","_this","_classCallCheck2","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","_event$data","wrap","_context","prev","next","data","activity","abrupt","emit","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","stop","_x","_ref2","_callee2","_event$data2","_t","_context2","eventSubType","RECORDING_EVENT_SUBTYPE","TRASH","PURGE","RESTORE","CALL_RECORDING_DELETED","CALL_RECORDING_UPDATED","_x2","_ref3","_callee3","_event$data3","_context3","_x3","sdkConnector","SDKConnector","getWebex","setWebex","recordingServiceUrl","internal","services","_serviceUrls","hydraDeveloperApi","get","_activeServices","registerRecordingListeners","log","setLogger","level","CALL_RECORDING_FILE","_inherits2","_createClass2","key","value","buildRecordingsUrl","options","_options$to","_options$status","_options$max","params","URLSearchParams","fromDate","from","_options$days","date","Date","setDate","getDate","days","DEFAULT_NUMBER_OF_DAYS","toISOString","toDate","to","append","FROM","TO","STATUS","status","DEFAULT_STATUS","MAX","concat","max","DEFAULT_MAX","optionalParams","SERVICE_TYPE","serviceType","FORMAT","format","OWNER_TYPE","ownerType","STORAGE_REGION","storageRegion","LOCATION_ID","locationId","TOPIC","topic","_ref4","_ref5","_slicedToArray2","CONVERGED_RECORDINGS","toString","getCallRecording","request","dispatchGetCallRecording","type","RecordingRequestType","LIST","getRecordings","DETAIL","getRecording","recordingId","METADATA","getRecordingMetadata","BY_CALL_SESSION","getRecordingsByCallSessionId","callSessionId","exhaustiveCheck","Error","_stringify","_getRecordings","_callee4","loggerContext","_response$headers","_response$body","_body$items","_responseDetails$data","_responseDetails$data2","url","response","body","responseDetails","errorInfo","_t2","_context4","file","method","METHODS","GET_RECORDINGS","info","METHOD_START_MESSAGE","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","HYDRA_DEVELOPER_API","webexUserRequest","headers","WEBEX_USER_REQUEST_HEADER","sent","trackingid","statusCode","Number","SUCCESS_STATUS_CODE","recordings","items","message","SUCCESS_MESSAGE","error","uploadLogs","serviceErrorCodeHandler","_x4","_getRecording","_callee5","_response$headers2","_t3","_context5","GET_RECORDING","recording","_x5","_getRecordingsByCallSessionId","_callee6","_listResponse$data$re","listResponse","filtered","_context6","GET_RECORDINGS_BY_CALL_SESSION_ID","_recording$serviceDat","serviceData","RECORDING_NOT_FOUND_MESSAGE","_x6","_x7","_getRecordingMetadata","_callee7","_response$headers3","_t4","_context7","GET_RECORDING_METADATA","metadata","_x8","_deleteRecording","_callee8","_response$headers4","_t5","_context8","DELETE_RECORDING","reason","comment","DELETE","_keys","deleteRecording","_x9","_x0","registerListener","MOBIUS_EVENT_KEYS","RECORDING_EVENT_CREATED","handleRecordingCreatedEvent","RECORDING_EVENT_UPDATED","handleRecordingUpdatedEvent","RECORDING_EVENT_DELETED","handleRecordingDeletedEvent","Eventing"],"sources":["WxcCallRecordingConnector.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {ALLOWED_SERVICES, HTTP_METHODS, WebexRequestPayload} from '../common/types';\nimport log from '../Logger';\nimport {serviceErrorCodeHandler, uploadLogs} from '../common/Utils';\nimport {METHOD_START_MESSAGE, SUCCESS_MESSAGE, SUCCESS_STATUS_CODE} from '../common/constants';\nimport {\n CallRecordingEventTypes,\n COMMON_EVENT_KEYS,\n MOBIUS_EVENT_KEYS,\n RECORDING_EVENT_SUBTYPE,\n RecordingEvent,\n} from '../Events/types';\nimport {Eventing} from '../Events/impl';\nimport {\n DeleteRecordingOptions,\n GetCallRecordingRequest,\n GetRecordingsOptions,\n ICallRecording,\n LoggerInterface,\n Recording,\n RecordingDeleteResponse,\n RecordingListBody,\n RecordingListResponse,\n RecordingMetadata,\n RecordingMetadataResponse,\n RecordingRequestType,\n RecordingResponse,\n RecordingResponseFor,\n} from './types';\nimport {\n CALL_RECORDING_FILE,\n CONVERGED_RECORDINGS,\n DEFAULT_MAX,\n DEFAULT_NUMBER_OF_DAYS,\n DEFAULT_STATUS,\n FORMAT,\n FROM,\n LOCATION_ID,\n MAX,\n METADATA,\n METHODS,\n OWNER_TYPE,\n RECORDING_NOT_FOUND_MESSAGE,\n SERVICE_TYPE,\n STATUS,\n STORAGE_REGION,\n TO,\n TOPIC,\n WEBEX_USER_REQUEST_HEADER,\n} from './constants';\n\n/**\n * Webex Calling (WXC) backend connector for Post Call Recording.\n *\n * Owns everything backend-specific for the Webex Calling cloud `convergedRecordings` capability:\n * resolving the hydra developer API base URL from the u2c catalog, the REST read/delete calls, and\n * subscribing to the `convergedRecordings.*` Mercury events (re-emitting them as typed\n * `callRecording:*` events). The {@link CallRecording} facade selects this connector when the\n * resolved calling backend is WXC.\n */\nexport class WxcCallRecordingConnector\n extends Eventing<CallRecordingEventTypes>\n implements ICallRecording\n{\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private recordingServiceUrl: string;\n\n /**\n * @param webex - `Webex SDK` instance.\n * @param logger - Logger interface used to set the log level for the module.\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n\n // Resolve the Post Call Recording base URL (hydra developer API) directly from the u2c\n // service catalog. The catalog is populated by the host SDK's service discovery, so no\n // dedicated recording plugin is required.\n this.recordingServiceUrl =\n this.webex.internal.services._serviceUrls?.hydraDeveloperApi ||\n this.webex.internal.services.get(\n this.webex.internal.services._activeServices?.hydraDeveloperApi as string\n );\n\n this.registerRecordingListeners();\n log.setLogger(logger.level, CALL_RECORDING_FILE);\n }\n\n /**\n * Builds the `convergedRecordings` collection URL with the list query parameters.\n *\n * The converged recordings API only returns results when the request is bounded by BOTH a\n * `from` and a `to` timestamp, so this method always sends both (a `from`-only request comes\n * back empty). When the caller does not supply an explicit `from`, it is derived from the\n * `days` lookback (`now - days`, default {@link DEFAULT_NUMBER_OF_DAYS}); when `to` is omitted\n * it defaults to the current time (`now`). `status` and `max` default to `available` and `30`.\n * The remaining filters (`serviceType`, `format`, `ownerType`, `storageRegion`, `locationId`,\n * `topic`) are pass-through and only appended when the caller provides them.\n *\n * @param options - Optional time window/filtering/pagination from {@link GetRecordingsOptions}.\n * @returns The fully-qualified request URL.\n */\n private buildRecordingsUrl(options?: GetRecordingsOptions): string {\n const params = new URLSearchParams();\n\n let fromDate = options?.from;\n if (!fromDate) {\n const date = new Date();\n date.setDate(date.getDate() - (options?.days ?? DEFAULT_NUMBER_OF_DAYS));\n fromDate = date.toISOString();\n }\n const toDate = options?.to ?? new Date().toISOString();\n\n params.append(FROM, fromDate);\n params.append(TO, toDate);\n params.append(STATUS, options?.status ?? DEFAULT_STATUS);\n params.append(MAX, `${options?.max ?? DEFAULT_MAX}`);\n\n // Optional pass-through filters: only sent when the caller provides them so the API can apply\n // its own defaults for any that are omitted.\n const optionalParams: Array<[string, string | undefined]> = [\n [SERVICE_TYPE, options?.serviceType],\n [FORMAT, options?.format],\n [OWNER_TYPE, options?.ownerType],\n [STORAGE_REGION, options?.storageRegion],\n [LOCATION_ID, options?.locationId],\n [TOPIC, options?.topic],\n ];\n optionalParams.forEach(([key, value]) => {\n if (value) {\n params.append(key, value);\n }\n });\n\n return `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}?${params.toString()}`;\n }\n\n /**\n * Reads Post Call Recordings, dispatching to the matching operation based on the request `type`.\n * The concrete response type is inferred per request via {@link RecordingResponseFor}.\n *\n * @param request - The discriminated read request.\n */\n public getCallRecording<T extends GetCallRecordingRequest>(\n request: T\n ): Promise<RecordingResponseFor<T>> {\n return this.dispatchGetCallRecording(request) as Promise<RecordingResponseFor<T>>;\n }\n\n /**\n * Internal dispatcher for {@link getCallRecording}. Routes the discriminated request to the\n * backend-specific read method. Kept separate from the public generic signature so the switch\n * runs against a concrete union (with exhaustiveness checking) and the conditional return type is\n * narrowed in exactly one place.\n *\n * @param request - The discriminated read request.\n */\n private dispatchGetCallRecording(\n request: GetCallRecordingRequest\n ): Promise<RecordingListResponse | RecordingResponse | RecordingMetadataResponse> {\n switch (request.type) {\n case RecordingRequestType.LIST:\n return this.getRecordings(request.options);\n\n case RecordingRequestType.DETAIL:\n return this.getRecording(request.recordingId);\n\n case RecordingRequestType.METADATA:\n return this.getRecordingMetadata(request.recordingId);\n\n case RecordingRequestType.BY_CALL_SESSION:\n return this.getRecordingsByCallSessionId(request.callSessionId, request.options);\n\n default: {\n const exhaustiveCheck: never = request;\n\n throw new Error(`Unsupported recording request type: ${JSON.stringify(exhaustiveCheck)}`);\n }\n }\n }\n\n /**\n * Fetches the converged recordings for the current user.\n * @param options - Optional filters and pagination parameters.\n */\n private async getRecordings(options?: GetRecordingsOptions): Promise<RecordingListResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDINGS,\n };\n\n log.info(\n `${METHOD_START_MESSAGE} with options=${JSON.stringify(options ?? {})}`,\n loggerContext\n );\n\n try {\n const url = this.buildRecordingsUrl(options);\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n ...(options?.webexUserRequest ? {headers: {[WEBEX_USER_REQUEST_HEADER]: 'true'}} : {}),\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const body = (response.body ?? {}) as RecordingListBody;\n\n const responseDetails: RecordingListResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {\n recordings: body.items ?? [],\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(\n `Successfully retrieved ${responseDetails.data.recordings?.length ?? 0} recordings`,\n loggerContext\n );\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get recordings: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(errorInfo, loggerContext) as Promise<RecordingListResponse>;\n }\n }\n\n /**\n * Fetches a single converged recording by its id.\n * @param recordingId - The recording id (`id`).\n */\n private async getRecording(recordingId: string): Promise<RecordingResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDING,\n };\n\n log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);\n\n try {\n const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${recordingId}`;\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const responseDetails: RecordingResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {\n recording: response.body as Recording,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully retrieved recording ${recordingId}`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get recording: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(errorInfo, loggerContext) as Promise<RecordingResponse>;\n }\n }\n\n /**\n * Returns all recordings linked to a given call session id.\n *\n * Note (documented API gap): the recording API does not expose a confirmed server-side query parameter\n * to filter by call session id, so a list is fetched and filtered client-side on\n * `serviceData.callSessionId`. The scan is bounded by the list query, so `options` is forwarded\n * to {@link getRecordings} to let callers widen the time window/status/page when the target\n * session may fall outside the defaults.\n *\n * @param callSessionId - The call session id to filter by.\n * @param options - Optional list query forwarded to {@link getRecordings} to control the\n * set of recordings scanned before filtering.\n */\n private async getRecordingsByCallSessionId(\n callSessionId: string,\n options?: GetRecordingsOptions\n ): Promise<RecordingListResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDINGS_BY_CALL_SESSION_ID,\n };\n\n log.info(`${METHOD_START_MESSAGE} with callSessionId=${callSessionId}`, loggerContext);\n\n const listResponse = await this.getRecordings(options);\n\n if (listResponse.statusCode !== SUCCESS_STATUS_CODE) {\n return listResponse;\n }\n\n const filtered = (listResponse.data.recordings ?? []).filter(\n (recording) => recording.serviceData?.callSessionId === callSessionId\n );\n\n if (filtered.length === 0) {\n log.info(RECORDING_NOT_FOUND_MESSAGE, loggerContext);\n } else {\n log.log(\n `Successfully retrieved ${filtered.length} recordings for call session ${callSessionId}`,\n loggerContext\n );\n }\n\n return {\n statusCode: SUCCESS_STATUS_CODE,\n data: {\n recordings: filtered,\n },\n message: SUCCESS_MESSAGE,\n };\n }\n\n /**\n * Fetches the metadata for a single recording.\n * @param recordingId - The recording id (`id`).\n */\n private async getRecordingMetadata(recordingId: string): Promise<RecordingMetadataResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDING_METADATA,\n };\n\n log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);\n\n try {\n const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${recordingId}/${METADATA}`;\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const responseDetails: RecordingMetadataResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {\n metadata: response.body as RecordingMetadata,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully retrieved metadata for recording ${recordingId}`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get recording metadata: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(\n errorInfo,\n loggerContext\n ) as Promise<RecordingMetadataResponse>;\n }\n }\n\n /**\n * Permanently deletes a single recording. Per the API the recording cannot be recovered.\n * @param recordingId - The recording id (`id`) to delete.\n * @param options - Optional `reason`/`comment`, only required for Compliance Officer deletions.\n */\n public async deleteRecording(\n recordingId: string,\n options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.DELETE_RECORDING,\n };\n\n log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);\n\n try {\n const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${recordingId}`;\n\n const body: DeleteRecordingOptions = {};\n if (options?.reason) {\n body.reason = options.reason;\n }\n if (options?.comment) {\n body.comment = options.comment;\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.DELETE,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n ...(Object.keys(body).length > 0 ? {body} : {}),\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const responseDetails: RecordingDeleteResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully deleted recording ${recordingId}`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to delete recording: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(errorInfo, loggerContext) as Promise<RecordingDeleteResponse>;\n }\n }\n\n // `event` is optional because SDKConnector.registerListener invokes callbacks as `(data?: T)`.\n // `data` uses optional chaining at runtime because malformed Mercury payloads may omit it.\n handleRecordingCreatedEvent = async (event?: RecordingEvent) => {\n if (!event?.data?.activity) {\n return;\n }\n\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event);\n };\n\n /**\n * The backend expresses the full recording lifecycle through `convergedRecordings.updated` events\n * qualified by an `eventSubType` (rather than dedicated created/deleted events):\n * - `TRASH` (soft delete) / `PURGE` (permanent delete) -> surfaced as `callRecording:deleted`\n * so consumers can drop the recording from the active list.\n * - `RESTORE` (restored from trash) -> surfaced as `callRecording:created` so it is re-added.\n * - `SUMMARY_CREATE` (AI summary/transcript ready) and anything else -> `callRecording:updated`.\n *\n * The full event (including `data.eventSubType`) is always forwarded, so consumers that need to\n * distinguish a soft delete from a permanent purge can still inspect it.\n */\n handleRecordingUpdatedEvent = async (event?: RecordingEvent) => {\n if (!event?.data?.activity) {\n return;\n }\n\n switch (event.data.eventSubType) {\n case RECORDING_EVENT_SUBTYPE.TRASH:\n case RECORDING_EVENT_SUBTYPE.PURGE:\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event);\n break;\n\n case RECORDING_EVENT_SUBTYPE.RESTORE:\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event);\n break;\n\n default:\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, event);\n }\n };\n\n handleRecordingDeletedEvent = async (event?: RecordingEvent) => {\n if (!event?.data?.activity) {\n return;\n }\n\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event);\n };\n\n /**\n * Subscribes to the recording Mercury events and re-emits them as typed client events.\n */\n private registerRecordingListeners() {\n this.sdkConnector.registerListener<RecordingEvent>(\n MOBIUS_EVENT_KEYS.RECORDING_EVENT_CREATED,\n this.handleRecordingCreatedEvent\n );\n this.sdkConnector.registerListener<RecordingEvent>(\n MOBIUS_EVENT_KEYS.RECORDING_EVENT_UPDATED,\n this.handleRecordingUpdatedEvent\n );\n this.sdkConnector.registerListener<RecordingEvent>(\n MOBIUS_EVENT_KEYS.RECORDING_EVENT_DELETED,\n this.handleRecordingDeletedEvent\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_types2","_impl","_types3","_constants2","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","WxcCallRecordingConnector","exports","_Eventing","webex","logger","_this$webex$internal$","_this$webex$internal$2","_this","_classCallCheck2","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","_event$data","wrap","_context","prev","next","data","activity","abrupt","emit","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","stop","_x","_ref2","_callee2","_event$data2","_t","_context2","eventSubType","RECORDING_EVENT_SUBTYPE","TRASH","PURGE","RESTORE","CALL_RECORDING_DELETED","CALL_RECORDING_UPDATED","_x2","_ref3","_callee3","_event$data3","_context3","_x3","sdkConnector","SDKConnector","getWebex","setWebex","recordingServiceUrl","internal","services","_serviceUrls","hydraDeveloperApi","get","_activeServices","registerRecordingListeners","log","setLogger","level","CALL_RECORDING_FILE","_inherits2","_createClass2","key","value","buildRecordingsUrl","options","_options$to","_options$status","_options$max","params","URLSearchParams","fromDate","from","_options$days","date","Date","setDate","getDate","days","DEFAULT_NUMBER_OF_DAYS","toISOString","toDate","to","append","FROM","TO","STATUS","status","DEFAULT_STATUS","MAX","concat","max","DEFAULT_MAX","optionalParams","SERVICE_TYPE","serviceType","FORMAT","format","OWNER_TYPE","ownerType","STORAGE_REGION","storageRegion","LOCATION_ID","locationId","TOPIC","topic","_ref4","_ref5","_slicedToArray2","CONVERGED_RECORDINGS","toString","getCallRecording","request","dispatchGetCallRecording","type","RecordingRequestType","LIST","getRecordings","DETAIL","getRecording","recordingId","METADATA","getRecordingMetadata","BY_CALL_SESSION","getRecordingsByCallSessionId","callSessionId","exhaustiveCheck","Error","_stringify","_getRecordings","_callee4","loggerContext","_response$headers","_response$body","_body$items","_responseDetails$data","_responseDetails$data2","url","response","body","responseDetails","errorInfo","_t2","_context4","file","method","METHODS","GET_RECORDINGS","info","METHOD_START_MESSAGE","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","HYDRA_DEVELOPER_API","webexUserRequest","headers","WEBEX_USER_REQUEST_HEADER","sent","trackingid","statusCode","Number","SUCCESS_STATUS_CODE","recordings","items","message","SUCCESS_MESSAGE","error","uploadLogs","serviceErrorCodeHandler","_x4","_getRecording","_callee5","_response$headers2","_t3","_context5","GET_RECORDING","recording","_x5","_getRecordingsByCallSessionId","_callee6","_listResponse$data$re","listResponse","filtered","_context6","GET_RECORDINGS_BY_CALL_SESSION_ID","_recording$serviceDat","serviceData","RECORDING_NOT_FOUND_MESSAGE","_x6","_x7","_getRecordingMetadata","_callee7","_response$headers3","_t4","_context7","GET_RECORDING_METADATA","metadata","_x8","_deleteRecording","_callee8","_options","_response$headers4","_t5","_context8","DELETE_RECORDING","SOFT_DELETE","POST","recordingIds","deleteRecording","_x9","_x0","registerListener","MOBIUS_EVENT_KEYS","RECORDING_EVENT_CREATED","handleRecordingCreatedEvent","RECORDING_EVENT_UPDATED","handleRecordingUpdatedEvent","RECORDING_EVENT_DELETED","handleRecordingDeletedEvent","Eventing"],"sources":["WxcCallRecordingConnector.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {ALLOWED_SERVICES, HTTP_METHODS, WebexRequestPayload} from '../common/types';\nimport log from '../Logger';\nimport {serviceErrorCodeHandler, uploadLogs} from '../common/Utils';\nimport {METHOD_START_MESSAGE, SUCCESS_MESSAGE, SUCCESS_STATUS_CODE} from '../common/constants';\nimport {\n CallRecordingEventTypes,\n COMMON_EVENT_KEYS,\n MOBIUS_EVENT_KEYS,\n RECORDING_EVENT_SUBTYPE,\n RecordingEvent,\n} from '../Events/types';\nimport {Eventing} from '../Events/impl';\nimport {\n DeleteRecordingOptions,\n GetCallRecordingRequest,\n GetRecordingsOptions,\n ICallRecording,\n LoggerInterface,\n Recording,\n RecordingDeleteResponse,\n RecordingListBody,\n RecordingListResponse,\n RecordingMetadata,\n RecordingMetadataResponse,\n RecordingRequestType,\n RecordingResponse,\n RecordingResponseFor,\n} from './types';\nimport {\n CALL_RECORDING_FILE,\n CONVERGED_RECORDINGS,\n DEFAULT_MAX,\n DEFAULT_NUMBER_OF_DAYS,\n DEFAULT_STATUS,\n FORMAT,\n FROM,\n LOCATION_ID,\n MAX,\n METADATA,\n METHODS,\n OWNER_TYPE,\n RECORDING_NOT_FOUND_MESSAGE,\n SERVICE_TYPE,\n SOFT_DELETE,\n STATUS,\n STORAGE_REGION,\n TO,\n TOPIC,\n WEBEX_USER_REQUEST_HEADER,\n} from './constants';\n\n/**\n * Webex Calling (WXC) backend connector for Post Call Recording.\n *\n * Owns everything backend-specific for the Webex Calling cloud `convergedRecordings` capability:\n * resolving the hydra developer API base URL from the u2c catalog, the REST read/delete calls, and\n * subscribing to the `convergedRecordings.*` Mercury events (re-emitting them as typed\n * `callRecording:*` events). The {@link CallRecording} facade selects this connector when the\n * resolved calling backend is WXC.\n */\nexport class WxcCallRecordingConnector\n extends Eventing<CallRecordingEventTypes>\n implements ICallRecording\n{\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private recordingServiceUrl: string;\n\n /**\n * @param webex - `Webex SDK` instance.\n * @param logger - Logger interface used to set the log level for the module.\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n\n // Resolve the Post Call Recording base URL (hydra developer API) directly from the u2c\n // service catalog. The catalog is populated by the host SDK's service discovery, so no\n // dedicated recording plugin is required.\n this.recordingServiceUrl =\n this.webex.internal.services._serviceUrls?.hydraDeveloperApi ||\n this.webex.internal.services.get(\n this.webex.internal.services._activeServices?.hydraDeveloperApi as string\n );\n\n this.registerRecordingListeners();\n log.setLogger(logger.level, CALL_RECORDING_FILE);\n }\n\n /**\n * Builds the `convergedRecordings` collection URL with the list query parameters.\n *\n * The converged recordings API only returns results when the request is bounded by BOTH a\n * `from` and a `to` timestamp, so this method always sends both (a `from`-only request comes\n * back empty). When the caller does not supply an explicit `from`, it is derived from the\n * `days` lookback (`now - days`, default {@link DEFAULT_NUMBER_OF_DAYS}); when `to` is omitted\n * it defaults to the current time (`now`). `status` and `max` default to `available` and `30`.\n * The remaining filters (`serviceType`, `format`, `ownerType`, `storageRegion`, `locationId`,\n * `topic`) are pass-through and only appended when the caller provides them.\n *\n * @param options - Optional time window/filtering/pagination from {@link GetRecordingsOptions}.\n * @returns The fully-qualified request URL.\n */\n private buildRecordingsUrl(options?: GetRecordingsOptions): string {\n const params = new URLSearchParams();\n\n let fromDate = options?.from;\n if (!fromDate) {\n const date = new Date();\n date.setDate(date.getDate() - (options?.days ?? DEFAULT_NUMBER_OF_DAYS));\n fromDate = date.toISOString();\n }\n const toDate = options?.to ?? new Date().toISOString();\n\n params.append(FROM, fromDate);\n params.append(TO, toDate);\n params.append(STATUS, options?.status ?? DEFAULT_STATUS);\n params.append(MAX, `${options?.max ?? DEFAULT_MAX}`);\n\n // Optional pass-through filters: only sent when the caller provides them so the API can apply\n // its own defaults for any that are omitted.\n const optionalParams: Array<[string, string | undefined]> = [\n [SERVICE_TYPE, options?.serviceType],\n [FORMAT, options?.format],\n [OWNER_TYPE, options?.ownerType],\n [STORAGE_REGION, options?.storageRegion],\n [LOCATION_ID, options?.locationId],\n [TOPIC, options?.topic],\n ];\n optionalParams.forEach(([key, value]) => {\n if (value) {\n params.append(key, value);\n }\n });\n\n return `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}?${params.toString()}`;\n }\n\n /**\n * Reads Post Call Recordings, dispatching to the matching operation based on the request `type`.\n * The concrete response type is inferred per request via {@link RecordingResponseFor}.\n *\n * @param request - The discriminated read request.\n */\n public getCallRecording<T extends GetCallRecordingRequest>(\n request: T\n ): Promise<RecordingResponseFor<T>> {\n return this.dispatchGetCallRecording(request) as Promise<RecordingResponseFor<T>>;\n }\n\n /**\n * Internal dispatcher for {@link getCallRecording}. Routes the discriminated request to the\n * backend-specific read method. Kept separate from the public generic signature so the switch\n * runs against a concrete union (with exhaustiveness checking) and the conditional return type is\n * narrowed in exactly one place.\n *\n * @param request - The discriminated read request.\n */\n private dispatchGetCallRecording(\n request: GetCallRecordingRequest\n ): Promise<RecordingListResponse | RecordingResponse | RecordingMetadataResponse> {\n switch (request.type) {\n case RecordingRequestType.LIST:\n return this.getRecordings(request.options);\n\n case RecordingRequestType.DETAIL:\n return this.getRecording(request.recordingId);\n\n case RecordingRequestType.METADATA:\n return this.getRecordingMetadata(request.recordingId);\n\n case RecordingRequestType.BY_CALL_SESSION:\n return this.getRecordingsByCallSessionId(request.callSessionId, request.options);\n\n default: {\n const exhaustiveCheck: never = request;\n\n throw new Error(`Unsupported recording request type: ${JSON.stringify(exhaustiveCheck)}`);\n }\n }\n }\n\n /**\n * Fetches the converged recordings for the current user.\n * @param options - Optional filters and pagination parameters.\n */\n private async getRecordings(options?: GetRecordingsOptions): Promise<RecordingListResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDINGS,\n };\n\n log.info(\n `${METHOD_START_MESSAGE} with options=${JSON.stringify(options ?? {})}`,\n loggerContext\n );\n\n try {\n const url = this.buildRecordingsUrl(options);\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n ...(options?.webexUserRequest ? {headers: {[WEBEX_USER_REQUEST_HEADER]: 'true'}} : {}),\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const body = (response.body ?? {}) as RecordingListBody;\n\n const responseDetails: RecordingListResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {\n recordings: body.items ?? [],\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(\n `Successfully retrieved ${responseDetails.data.recordings?.length ?? 0} recordings`,\n loggerContext\n );\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get recordings: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(errorInfo, loggerContext) as Promise<RecordingListResponse>;\n }\n }\n\n /**\n * Fetches a single converged recording by its id.\n * @param recordingId - The recording id (`id`).\n */\n private async getRecording(recordingId: string): Promise<RecordingResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDING,\n };\n\n log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);\n\n try {\n const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${recordingId}`;\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const responseDetails: RecordingResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {\n recording: response.body as Recording,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully retrieved recording ${recordingId}`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get recording: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(errorInfo, loggerContext) as Promise<RecordingResponse>;\n }\n }\n\n /**\n * Returns all recordings linked to a given call session id.\n *\n * Note (documented API gap): the recording API does not expose a confirmed server-side query parameter\n * to filter by call session id, so a list is fetched and filtered client-side on\n * `serviceData.callSessionId`. The scan is bounded by the list query, so `options` is forwarded\n * to {@link getRecordings} to let callers widen the time window/status/page when the target\n * session may fall outside the defaults.\n *\n * @param callSessionId - The call session id to filter by.\n * @param options - Optional list query forwarded to {@link getRecordings} to control the\n * set of recordings scanned before filtering.\n */\n private async getRecordingsByCallSessionId(\n callSessionId: string,\n options?: GetRecordingsOptions\n ): Promise<RecordingListResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDINGS_BY_CALL_SESSION_ID,\n };\n\n log.info(`${METHOD_START_MESSAGE} with callSessionId=${callSessionId}`, loggerContext);\n\n const listResponse = await this.getRecordings(options);\n\n if (listResponse.statusCode !== SUCCESS_STATUS_CODE) {\n return listResponse;\n }\n\n const filtered = (listResponse.data.recordings ?? []).filter(\n (recording) => recording.serviceData?.callSessionId === callSessionId\n );\n\n if (filtered.length === 0) {\n log.info(RECORDING_NOT_FOUND_MESSAGE, loggerContext);\n } else {\n log.log(\n `Successfully retrieved ${filtered.length} recordings for call session ${callSessionId}`,\n loggerContext\n );\n }\n\n return {\n statusCode: SUCCESS_STATUS_CODE,\n data: {\n recordings: filtered,\n },\n message: SUCCESS_MESSAGE,\n };\n }\n\n /**\n * Fetches the metadata for a single recording.\n * @param recordingId - The recording id (`id`).\n */\n private async getRecordingMetadata(recordingId: string): Promise<RecordingMetadataResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.GET_RECORDING_METADATA,\n };\n\n log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);\n\n try {\n const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${recordingId}/${METADATA}`;\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const responseDetails: RecordingMetadataResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {\n metadata: response.body as RecordingMetadata,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully retrieved metadata for recording ${recordingId}`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get recording metadata: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(\n errorInfo,\n loggerContext\n ) as Promise<RecordingMetadataResponse>;\n }\n }\n\n /**\n * Moves a recording to the recycle bin (soft delete). Matches native Webex user delete:\n * `POST /convergedRecordings/softDelete` with `recordingIds: [recordingId]`.\n * Requires `spark:recordings_write` on the access token.\n *\n * Mercury emits `convergedRecordings.updated` + `eventSubType: TRASH`, which this connector\n * surfaces as `callRecording:deleted`.\n *\n * @param recordingId - The recording id (`id`) to move to the recycle bin.\n * @param _options - Deprecated. Ignored. Compliance permanent delete uses a separate API.\n */\n public async deleteRecording(\n recordingId: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- kept for ICallRecording signature parity; soft delete ignores options\n _options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse> {\n const loggerContext = {\n file: CALL_RECORDING_FILE,\n method: METHODS.DELETE_RECORDING,\n };\n\n log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);\n\n try {\n const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${SOFT_DELETE}`;\n\n const response = <WebexRequestPayload>await this.webex.request({\n uri: url,\n method: HTTP_METHODS.POST,\n service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,\n body: {recordingIds: [recordingId]},\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const responseDetails: RecordingDeleteResponse = {\n statusCode: Number(response.statusCode) || SUCCESS_STATUS_CODE,\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully moved recording ${recordingId} to recycle bin`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to delete recording: ${JSON.stringify(err)}`, loggerContext);\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n\n return serviceErrorCodeHandler(errorInfo, loggerContext) as Promise<RecordingDeleteResponse>;\n }\n }\n\n // `event` is optional because SDKConnector.registerListener invokes callbacks as `(data?: T)`.\n // `data` uses optional chaining at runtime because malformed Mercury payloads may omit it.\n handleRecordingCreatedEvent = async (event?: RecordingEvent) => {\n if (!event?.data?.activity) {\n return;\n }\n\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event);\n };\n\n /**\n * The backend expresses the full recording lifecycle through `convergedRecordings.updated` events\n * qualified by an `eventSubType` (rather than dedicated created/deleted events):\n * - `TRASH` (soft delete) / `PURGE` (permanent delete) -> surfaced as `callRecording:deleted`\n * so consumers can drop the recording from the active list.\n * - `RESTORE` (restored from trash) -> surfaced as `callRecording:created` so it is re-added.\n * - `SUMMARY_CREATE` (AI summary/transcript ready) and anything else -> `callRecording:updated`.\n *\n * The full event (including `data.eventSubType`) is always forwarded, so consumers that need to\n * distinguish a soft delete from a permanent purge can still inspect it.\n */\n handleRecordingUpdatedEvent = async (event?: RecordingEvent) => {\n if (!event?.data?.activity) {\n return;\n }\n\n switch (event.data.eventSubType) {\n case RECORDING_EVENT_SUBTYPE.TRASH:\n case RECORDING_EVENT_SUBTYPE.PURGE:\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event);\n break;\n\n case RECORDING_EVENT_SUBTYPE.RESTORE:\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event);\n break;\n\n default:\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, event);\n }\n };\n\n handleRecordingDeletedEvent = async (event?: RecordingEvent) => {\n if (!event?.data?.activity) {\n return;\n }\n\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event);\n };\n\n /**\n * Subscribes to the recording Mercury events and re-emits them as typed client events.\n */\n private registerRecordingListeners() {\n this.sdkConnector.registerListener<RecordingEvent>(\n MOBIUS_EVENT_KEYS.RECORDING_EVENT_CREATED,\n this.handleRecordingCreatedEvent\n );\n this.sdkConnector.registerListener<RecordingEvent>(\n MOBIUS_EVENT_KEYS.RECORDING_EVENT_UPDATED,\n this.handleRecordingUpdatedEvent\n );\n this.sdkConnector.registerListener<RecordingEvent>(\n MOBIUS_EVENT_KEYS.RECORDING_EVENT_DELETED,\n this.handleRecordingDeletedEvent\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -488,39 +488,41 @@ describe('WxcCallRecordingConnector tests', function () {
488
488
  file: _constants.CALL_RECORDING_FILE,
489
489
  method: _constants.METHODS.DELETE_RECORDING
490
490
  };
491
- it('successfully deletes a recording without a body when no options are provided', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14() {
491
+ it('successfully soft-deletes a recording via POST /convergedRecordings/softDelete', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14() {
492
492
  var response, callArgs;
493
493
  return _regenerator.default.wrap(function (_context14) {
494
494
  while (1) switch (_context14.prev = _context14.next) {
495
495
  case 0:
496
496
  webex.request.mockResolvedValue({
497
- statusCode: 200
497
+ statusCode: 204
498
498
  });
499
499
  _context14.next = 1;
500
500
  return connector.deleteRecording(_callRecordingFixtures.RECORDING_ONE.id);
501
501
  case 1:
502
502
  response = _context14.sent;
503
- expect(response.statusCode).toBe(200);
503
+ expect(response.statusCode).toBe(204);
504
504
  expect(response.message).toBe('SUCCESS');
505
505
  callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];
506
- expect(callArgs.uri).toContain("/convergedRecordings/".concat(_callRecordingFixtures.RECORDING_ONE.id));
507
- expect(callArgs.uri).not.toContain('/metadata');
508
- expect(callArgs.method).toBe(_types2.HTTP_METHODS.DELETE);
506
+ expect(callArgs.uri).toContain('/convergedRecordings/softDelete');
507
+ expect(callArgs.uri).not.toContain("/convergedRecordings/".concat(_callRecordingFixtures.RECORDING_ONE.id));
508
+ expect(callArgs.method).toBe(_types2.HTTP_METHODS.POST);
509
509
  expect(callArgs.service).toBe('hydraDeveloperApi');
510
- expect(callArgs.body).toBeUndefined();
510
+ expect(callArgs.body).toStrictEqual({
511
+ recordingIds: [_callRecordingFixtures.RECORDING_ONE.id]
512
+ });
511
513
  case 2:
512
514
  case "end":
513
515
  return _context14.stop();
514
516
  }
515
517
  }, _callee14);
516
518
  })));
517
- it('sends reason and comment in the body when provided (Compliance Officer deletion)', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15() {
519
+ it('ignores deprecated reason/comment options (compliance DELETE is not exposed)', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15() {
518
520
  var callArgs;
519
521
  return _regenerator.default.wrap(function (_context15) {
520
522
  while (1) switch (_context15.prev = _context15.next) {
521
523
  case 0:
522
524
  webex.request.mockResolvedValue({
523
- statusCode: 200
525
+ statusCode: 204
524
526
  });
525
527
  _context15.next = 1;
526
528
  return connector.deleteRecording(_callRecordingFixtures.RECORDING_ONE.id, {
@@ -529,10 +531,9 @@ describe('WxcCallRecordingConnector tests', function () {
529
531
  });
530
532
  case 1:
531
533
  callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];
532
- expect(callArgs.method).toBe(_types2.HTTP_METHODS.DELETE);
534
+ expect(callArgs.method).toBe(_types2.HTTP_METHODS.POST);
533
535
  expect(callArgs.body).toStrictEqual({
534
- reason: 'audit',
535
- comment: 'Maintain data privacy'
536
+ recordingIds: [_callRecordingFixtures.RECORDING_ONE.id]
536
537
  });
537
538
  case 2:
538
539
  case "end":
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_testUtil","_types2","_WxcCallRecordingConnector","_types3","_callRecordingFixtures","_types4","_constants","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_constants2","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","webex","getTestUtilsWebex","uploadLogsSpy","serviceErrorCodeHandlerSpy","describe","connector","infoSpy","jest","spyOn","log","mockImplementation","errorSpy","beforeAll","WxcCallRecordingConnector","level","LOGGER","INFO","beforeEach","mockResolvedValue","afterEach","clearAllMocks","loggerContext","file","CALL_RECORDING_FILE","method","METHODS","GET_RECORDINGS","it","_asyncToGenerator2","_regenerator","mark","_callee","_response$data$record","payload","response","wrap","_context","prev","next","MOCK_RECORDING_LIST_BODY","request","getCallRecording","type","RecordingRequestType","LIST","sent","expect","statusCode","toBe","message","data","recordings","toHaveLength","id","RECORDING_ONE","not","toHaveBeenCalled","stop","_callee2","callArgs","_context2","options","from","to","status","RecordingStatus","DELETED","max","serviceType","format","ownerType","storageRegion","locationId","topic","webexUserRequest","mock","calls","length","HTTP_METHODS","GET","service","uri","toContain","headers","toEqual","WebexUserRequest","_callee3","_context3","_callee4","_context4","useFakeTimers","setSystemTime","Date","days","concat","encodeURIComponent","useRealTimers","_callee5","_context5","toBeUndefined","_callee6","_context6","MOCK_EMPTY_RECORDING_LIST_BODY","each","expected","ERROR_DETAILS_400","ERROR_DETAILS_401","ERROR_DETAILS_404","_ref8","_callee7","_ref7","failurePayload","_context7","mockRejectedValue","toStrictEqual","toBeCalledOnceWith","toHaveBeenCalledWith","stringContaining","toHaveBeenCalledTimes","_x","apply","arguments","GET_RECORDING","_callee8","_response$data$record2","_context8","MOCK_RECORDING_BODY","DETAIL","recordingId","recording","METHOD_START_MESSAGE","_callee9","_context9","_callee0","_response$data$record3","_context0","BY_CALL_SESSION","callSessionId","CALL_SESSION_ID","_callee1","_context1","_callee10","_context10","_callee11","_context11","GET_RECORDING_METADATA","_callee12","_response$data$metada","_context12","MOCK_RECORDING_METADATA_BODY","METADATA","metadata","_callee13","_context13","DELETE_RECORDING","_callee14","_context14","deleteRecording","DELETE","body","_callee15","_context15","reason","comment","_callee16","_context16","localConnector","mockOn","findHandler","eventKey","filter","internal","mercury","on","mockClear","registeredKeys","map","RECORDING_MERCURY_KEYS","CREATED","UPDATED","done","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","event","MOCK_RECORDING_CREATED_EVENT","updatedRoutingData","name","MOCK_RECORDING_TRASH_EVENT","expectedKey","CALL_RECORDING_DELETED","MOCK_RECORDING_PURGE_EVENT","MOCK_RECORDING_RESTORE_EVENT","MOCK_RECORDING_UPDATED_EVENT","CALL_RECORDING_UPDATED","_ref18","spy","fn","MOCK_RECORDING_DELETED_EVENT"],"sources":["WxcCallRecordingConnector.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {LOGGER} from '../Logger/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {HTTP_METHODS, WebexRequestPayload} from '../common/types';\nimport {WxcCallRecordingConnector} from './WxcCallRecordingConnector';\nimport {RecordingRequestType, RecordingStatus} from './types';\nimport {\n CALL_SESSION_ID,\n ERROR_DETAILS_400,\n ERROR_DETAILS_401,\n ERROR_DETAILS_404,\n MOCK_EMPTY_RECORDING_LIST_BODY,\n MOCK_RECORDING_BODY,\n MOCK_RECORDING_CREATED_EVENT,\n MOCK_RECORDING_DELETED_EVENT,\n MOCK_RECORDING_LIST_BODY,\n MOCK_RECORDING_METADATA_BODY,\n MOCK_RECORDING_PURGE_EVENT,\n MOCK_RECORDING_RESTORE_EVENT,\n MOCK_RECORDING_TRASH_EVENT,\n MOCK_RECORDING_UPDATED_EVENT,\n RECORDING_MERCURY_KEYS,\n RECORDING_ONE,\n} from './callRecordingFixtures';\nimport {COMMON_EVENT_KEYS, RecordingEvent} from '../Events/types';\nimport {CALL_RECORDING_FILE, METHODS} from './constants';\nimport * as utils from '../common/Utils';\nimport log from '../Logger';\nimport {METHOD_START_MESSAGE} from '../common/constants';\n\nconst webex = getTestUtilsWebex();\nlet uploadLogsSpy: jest.SpyInstance;\nlet serviceErrorCodeHandlerSpy: jest.SpyInstance;\n\ndescribe('WxcCallRecordingConnector tests', () => {\n let connector: WxcCallRecordingConnector;\n const infoSpy = jest.spyOn(log, 'info').mockImplementation();\n const errorSpy = jest.spyOn(log, 'error').mockImplementation();\n\n beforeAll(() => {\n connector = new WxcCallRecordingConnector(webex, {level: LOGGER.INFO});\n });\n\n beforeEach(() => {\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n describe('getRecordings', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDINGS};\n\n it('successfully fetches the list of recordings', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.recordings).toHaveLength(2);\n expect(response.data.recordings?.[0].id).toBe(RECORDING_ONE.id);\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('builds the request URL with the provided filter/pagination query params', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({\n type: RecordingRequestType.LIST,\n options: {\n from: '2024-05-01T00:00:00.000Z',\n to: '2024-05-31T00:00:00.000Z',\n status: RecordingStatus.DELETED,\n max: 25,\n serviceType: 'calling',\n format: 'MP3',\n ownerType: 'user',\n storageRegion: 'US',\n locationId: 'location-123',\n topic: 'Call with User7',\n webexUserRequest: true,\n },\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(callArgs.uri).toContain('/convergedRecordings?');\n expect(callArgs.uri).toContain('from=2024-05-01T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('to=2024-05-31T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('status=deleted');\n expect(callArgs.uri).toContain('max=25');\n expect(callArgs.uri).toContain('serviceType=calling');\n expect(callArgs.uri).toContain('format=MP3');\n expect(callArgs.uri).toContain('ownerType=user');\n expect(callArgs.uri).toContain('storageRegion=US');\n expect(callArgs.uri).toContain('locationId=location-123');\n expect(callArgs.uri).toContain('topic=Call+with+User7');\n expect(callArgs.uri).not.toContain('orderType');\n expect(callArgs.uri).not.toContain('orderBy');\n expect(callArgs.uri).not.toContain('offset');\n expect(callArgs.uri).not.toContain('actorID');\n expect(callArgs.uri).not.toContain('showAccessCount');\n expect(callArgs.headers).toEqual({WebexUserRequest: 'true'});\n });\n\n it('applies the default filter/pagination query params when no options are provided', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain('from=');\n expect(callArgs.uri).toContain('to=');\n expect(callArgs.uri).toContain('status=available');\n expect(callArgs.uri).toContain('max=30');\n expect(callArgs.uri).not.toContain('orderType');\n expect(callArgs.uri).not.toContain('orderBy');\n expect(callArgs.uri).not.toContain('offset');\n // Optional pass-through filters are omitted when not provided.\n expect(callArgs.uri).not.toContain('serviceType');\n expect(callArgs.uri).not.toContain('format');\n expect(callArgs.uri).not.toContain('ownerType');\n expect(callArgs.uri).not.toContain('storageRegion');\n expect(callArgs.uri).not.toContain('locationId');\n expect(callArgs.uri).not.toContain('topic');\n });\n\n it('derives the from date from the days lookback and defaults to to now when not provided', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n jest.useFakeTimers().setSystemTime(new Date('2024-06-15T12:00:00.000Z'));\n\n await connector.getCallRecording({type: RecordingRequestType.LIST, options: {days: 7}});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`from=${encodeURIComponent('2024-06-08T12:00:00.000Z')}`);\n expect(callArgs.uri).toContain(`to=${encodeURIComponent('2024-06-15T12:00:00.000Z')}`);\n\n jest.useRealTimers();\n });\n\n it('does not send the WebexUserRequest header by default', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.headers).toBeUndefined();\n });\n\n it('returns an empty list when there are no recordings', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_EMPTY_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toEqual([]);\n });\n\n it.each([\n {statusCode: 400, expected: ERROR_DETAILS_400},\n {statusCode: 401, expected: ERROR_DETAILS_401},\n {statusCode: 404, expected: ERROR_DETAILS_404},\n ])('handles a $statusCode error', async ({statusCode, expected}) => {\n const failurePayload = {statusCode};\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>failurePayload));\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response).toStrictEqual(expected);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith({statusCode}, loggerContext);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to get recordings'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('getRecording', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDING};\n\n it('successfully fetches a single recording', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.DETAIL,\n recordingId: RECORDING_ONE.id,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.recording?.id).toBe(RECORDING_ONE.id);\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`/convergedRecordings/${RECORDING_ONE.id}`);\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with recordingId=${RECORDING_ONE.id}`,\n loggerContext\n );\n });\n\n it('handles a 404 error when the recording does not exist', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 404}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.DETAIL,\n recordingId: 'missing-id',\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_404);\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('getRecordingsByCallSessionId', () => {\n it('returns only the recordings matching the call session id', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toHaveLength(1);\n expect(response.data.recordings?.[0].id).toBe(RECORDING_ONE.id);\n });\n\n it('returns an empty list when no recording matches', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: 'non-existent-session',\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toEqual([]);\n });\n\n it('propagates the error response from the underlying list call', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 401}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_401);\n });\n\n it('forwards list options to the underlying list query to widen the scan', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n options: {\n from: '2024-05-01T00:00:00.000Z',\n to: '2024-05-31T00:00:00.000Z',\n status: RecordingStatus.DELETED,\n max: 100,\n },\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain('from=2024-05-01T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('to=2024-05-31T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('status=deleted');\n expect(callArgs.uri).toContain('max=100');\n });\n });\n\n describe('getRecordingMetadata', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDING_METADATA};\n\n it('successfully fetches the recording metadata', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_METADATA_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.METADATA,\n recordingId: RECORDING_ONE.id,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.metadata?.callSessionId).toBe(CALL_SESSION_ID);\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`/convergedRecordings/${RECORDING_ONE.id}/metadata`);\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n });\n\n it('handles a 400 error', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 400}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.METADATA,\n recordingId: 'bad-id',\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to get recording metadata'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('deleteRecording', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.DELETE_RECORDING};\n\n it('successfully deletes a recording without a body when no options are provided', async () => {\n webex.request.mockResolvedValue(<WebexRequestPayload>(<unknown>{statusCode: 200}));\n\n const response = await connector.deleteRecording(RECORDING_ONE.id);\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`/convergedRecordings/${RECORDING_ONE.id}`);\n expect(callArgs.uri).not.toContain('/metadata');\n expect(callArgs.method).toBe(HTTP_METHODS.DELETE);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(callArgs.body).toBeUndefined();\n });\n\n it('sends reason and comment in the body when provided (Compliance Officer deletion)', async () => {\n webex.request.mockResolvedValue(<WebexRequestPayload>(<unknown>{statusCode: 200}));\n\n await connector.deleteRecording(RECORDING_ONE.id, {\n reason: 'audit',\n comment: 'Maintain data privacy',\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.method).toBe(HTTP_METHODS.DELETE);\n expect(callArgs.body).toStrictEqual({reason: 'audit', comment: 'Maintain data privacy'});\n });\n\n it('handles a 400 error', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 400}));\n\n const response = await connector.deleteRecording('bad-id');\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to delete recording'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('URL resolution', () => {\n it('resolves the recording base URL from the services catalog (hydraDeveloperApi)', () => {\n const localConnector = new WxcCallRecordingConnector(getTestUtilsWebex(), {\n level: LOGGER.INFO,\n });\n\n expect(localConnector['recordingServiceUrl']).toBe('https://integration.webexapis.com/v1');\n });\n });\n\n describe('Recording Mercury events', () => {\n let mockOn: jest.Mock;\n\n const findHandler = (eventKey: string) => {\n const calls = mockOn.mock.calls.filter((call) => call[0] === eventKey);\n\n return calls[calls.length - 1][1];\n };\n\n beforeEach(() => {\n mockOn = webex.internal.mercury.on as unknown as jest.Mock;\n mockOn.mockClear();\n connector = new WxcCallRecordingConnector(webex, {level: LOGGER.INFO});\n });\n\n it('registers listeners for all three recording mercury events', () => {\n const registeredKeys = mockOn.mock.calls.map((call) => call[0]);\n\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.CREATED);\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.UPDATED);\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.DELETED);\n });\n\n it('emits the recording created event', (done) => {\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_CREATED_EVENT);\n done();\n });\n\n findHandler(RECORDING_MERCURY_KEYS.CREATED)(MOCK_RECORDING_CREATED_EVENT);\n });\n\n /**\n * The backend delivers the recording lifecycle through `convergedRecordings.updated` events\n * qualified by `eventSubType`. The connector routes them to the intuitive typed event:\n * name: TestCase name\n * event: the raw `updated` Mercury event (with its eventSubType)\n * expectedKey: the typed event the connector should emit\n */\n const updatedRoutingData: {\n name: string;\n event: RecordingEvent;\n expectedKey: COMMON_EVENT_KEYS;\n }[] = [\n {\n name: 'TRASH (soft delete) -> callRecording:deleted',\n event: MOCK_RECORDING_TRASH_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_DELETED,\n },\n {\n name: 'PURGE (permanent delete) -> callRecording:deleted',\n event: MOCK_RECORDING_PURGE_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_DELETED,\n },\n {\n name: 'RESTORE (restored from trash) -> callRecording:created',\n event: MOCK_RECORDING_RESTORE_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_CREATED,\n },\n {\n name: 'SUMMARY_CREATE (summary/transcript ready) -> callRecording:updated',\n event: MOCK_RECORDING_UPDATED_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED,\n },\n ];\n\n it.each(updatedRoutingData)(\n 'routes a convergedRecordings.updated event by eventSubType: $name',\n ({event, expectedKey}) => {\n const spy = jest.fn();\n connector.on(expectedKey, spy);\n\n findHandler(RECORDING_MERCURY_KEYS.UPDATED)(event);\n\n expect(spy).toHaveBeenCalledWith(event);\n }\n );\n\n it('emits the recording deleted event', (done) => {\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_DELETED_EVENT);\n done();\n });\n\n findHandler(RECORDING_MERCURY_KEYS.DELETED)(MOCK_RECORDING_DELETED_EVENT);\n });\n\n it('ignores malformed events without an activity payload', () => {\n const spy = jest.fn();\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, spy);\n\n findHandler(RECORDING_MERCURY_KEYS.CREATED)({} as RecordingEvent);\n\n expect(spy).not.toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_testUtil","_types2","_WxcCallRecordingConnector","_types3","_callRecordingFixtures","_types4","_constants","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_constants2","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","webex","getTestUtilsWebex","uploadLogsSpy","serviceErrorCodeHandlerSpy","describe","connector","infoSpy","jest","spyOn","log","mockImplementation","errorSpy","beforeAll","WxcCallRecordingConnector","level","LOGGER","INFO","beforeEach","mockResolvedValue","afterEach","clearAllMocks","loggerContext","file","CALL_RECORDING_FILE","method","METHODS","GET_RECORDINGS","it","_asyncToGenerator2","_regenerator","mark","_callee","_response$data$record","payload","response","wrap","_context","prev","next","MOCK_RECORDING_LIST_BODY","request","getCallRecording","type","RecordingRequestType","LIST","sent","expect","statusCode","toBe","message","data","recordings","toHaveLength","id","RECORDING_ONE","not","toHaveBeenCalled","stop","_callee2","callArgs","_context2","options","from","to","status","RecordingStatus","DELETED","max","serviceType","format","ownerType","storageRegion","locationId","topic","webexUserRequest","mock","calls","length","HTTP_METHODS","GET","service","uri","toContain","headers","toEqual","WebexUserRequest","_callee3","_context3","_callee4","_context4","useFakeTimers","setSystemTime","Date","days","concat","encodeURIComponent","useRealTimers","_callee5","_context5","toBeUndefined","_callee6","_context6","MOCK_EMPTY_RECORDING_LIST_BODY","each","expected","ERROR_DETAILS_400","ERROR_DETAILS_401","ERROR_DETAILS_404","_ref8","_callee7","_ref7","failurePayload","_context7","mockRejectedValue","toStrictEqual","toBeCalledOnceWith","toHaveBeenCalledWith","stringContaining","toHaveBeenCalledTimes","_x","apply","arguments","GET_RECORDING","_callee8","_response$data$record2","_context8","MOCK_RECORDING_BODY","DETAIL","recordingId","recording","METHOD_START_MESSAGE","_callee9","_context9","_callee0","_response$data$record3","_context0","BY_CALL_SESSION","callSessionId","CALL_SESSION_ID","_callee1","_context1","_callee10","_context10","_callee11","_context11","GET_RECORDING_METADATA","_callee12","_response$data$metada","_context12","MOCK_RECORDING_METADATA_BODY","METADATA","metadata","_callee13","_context13","DELETE_RECORDING","_callee14","_context14","deleteRecording","POST","body","recordingIds","_callee15","_context15","reason","comment","_callee16","_context16","localConnector","mockOn","findHandler","eventKey","filter","internal","mercury","on","mockClear","registeredKeys","map","RECORDING_MERCURY_KEYS","CREATED","UPDATED","done","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","event","MOCK_RECORDING_CREATED_EVENT","updatedRoutingData","name","MOCK_RECORDING_TRASH_EVENT","expectedKey","CALL_RECORDING_DELETED","MOCK_RECORDING_PURGE_EVENT","MOCK_RECORDING_RESTORE_EVENT","MOCK_RECORDING_UPDATED_EVENT","CALL_RECORDING_UPDATED","_ref18","spy","fn","MOCK_RECORDING_DELETED_EVENT"],"sources":["WxcCallRecordingConnector.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {LOGGER} from '../Logger/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {HTTP_METHODS, WebexRequestPayload} from '../common/types';\nimport {WxcCallRecordingConnector} from './WxcCallRecordingConnector';\nimport {RecordingRequestType, RecordingStatus} from './types';\nimport {\n CALL_SESSION_ID,\n ERROR_DETAILS_400,\n ERROR_DETAILS_401,\n ERROR_DETAILS_404,\n MOCK_EMPTY_RECORDING_LIST_BODY,\n MOCK_RECORDING_BODY,\n MOCK_RECORDING_CREATED_EVENT,\n MOCK_RECORDING_DELETED_EVENT,\n MOCK_RECORDING_LIST_BODY,\n MOCK_RECORDING_METADATA_BODY,\n MOCK_RECORDING_PURGE_EVENT,\n MOCK_RECORDING_RESTORE_EVENT,\n MOCK_RECORDING_TRASH_EVENT,\n MOCK_RECORDING_UPDATED_EVENT,\n RECORDING_MERCURY_KEYS,\n RECORDING_ONE,\n} from './callRecordingFixtures';\nimport {COMMON_EVENT_KEYS, RecordingEvent} from '../Events/types';\nimport {CALL_RECORDING_FILE, METHODS} from './constants';\nimport * as utils from '../common/Utils';\nimport log from '../Logger';\nimport {METHOD_START_MESSAGE} from '../common/constants';\n\nconst webex = getTestUtilsWebex();\nlet uploadLogsSpy: jest.SpyInstance;\nlet serviceErrorCodeHandlerSpy: jest.SpyInstance;\n\ndescribe('WxcCallRecordingConnector tests', () => {\n let connector: WxcCallRecordingConnector;\n const infoSpy = jest.spyOn(log, 'info').mockImplementation();\n const errorSpy = jest.spyOn(log, 'error').mockImplementation();\n\n beforeAll(() => {\n connector = new WxcCallRecordingConnector(webex, {level: LOGGER.INFO});\n });\n\n beforeEach(() => {\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n describe('getRecordings', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDINGS};\n\n it('successfully fetches the list of recordings', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.recordings).toHaveLength(2);\n expect(response.data.recordings?.[0].id).toBe(RECORDING_ONE.id);\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('builds the request URL with the provided filter/pagination query params', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({\n type: RecordingRequestType.LIST,\n options: {\n from: '2024-05-01T00:00:00.000Z',\n to: '2024-05-31T00:00:00.000Z',\n status: RecordingStatus.DELETED,\n max: 25,\n serviceType: 'calling',\n format: 'MP3',\n ownerType: 'user',\n storageRegion: 'US',\n locationId: 'location-123',\n topic: 'Call with User7',\n webexUserRequest: true,\n },\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(callArgs.uri).toContain('/convergedRecordings?');\n expect(callArgs.uri).toContain('from=2024-05-01T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('to=2024-05-31T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('status=deleted');\n expect(callArgs.uri).toContain('max=25');\n expect(callArgs.uri).toContain('serviceType=calling');\n expect(callArgs.uri).toContain('format=MP3');\n expect(callArgs.uri).toContain('ownerType=user');\n expect(callArgs.uri).toContain('storageRegion=US');\n expect(callArgs.uri).toContain('locationId=location-123');\n expect(callArgs.uri).toContain('topic=Call+with+User7');\n expect(callArgs.uri).not.toContain('orderType');\n expect(callArgs.uri).not.toContain('orderBy');\n expect(callArgs.uri).not.toContain('offset');\n expect(callArgs.uri).not.toContain('actorID');\n expect(callArgs.uri).not.toContain('showAccessCount');\n expect(callArgs.headers).toEqual({WebexUserRequest: 'true'});\n });\n\n it('applies the default filter/pagination query params when no options are provided', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain('from=');\n expect(callArgs.uri).toContain('to=');\n expect(callArgs.uri).toContain('status=available');\n expect(callArgs.uri).toContain('max=30');\n expect(callArgs.uri).not.toContain('orderType');\n expect(callArgs.uri).not.toContain('orderBy');\n expect(callArgs.uri).not.toContain('offset');\n // Optional pass-through filters are omitted when not provided.\n expect(callArgs.uri).not.toContain('serviceType');\n expect(callArgs.uri).not.toContain('format');\n expect(callArgs.uri).not.toContain('ownerType');\n expect(callArgs.uri).not.toContain('storageRegion');\n expect(callArgs.uri).not.toContain('locationId');\n expect(callArgs.uri).not.toContain('topic');\n });\n\n it('derives the from date from the days lookback and defaults to to now when not provided', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n jest.useFakeTimers().setSystemTime(new Date('2024-06-15T12:00:00.000Z'));\n\n await connector.getCallRecording({type: RecordingRequestType.LIST, options: {days: 7}});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`from=${encodeURIComponent('2024-06-08T12:00:00.000Z')}`);\n expect(callArgs.uri).toContain(`to=${encodeURIComponent('2024-06-15T12:00:00.000Z')}`);\n\n jest.useRealTimers();\n });\n\n it('does not send the WebexUserRequest header by default', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.headers).toBeUndefined();\n });\n\n it('returns an empty list when there are no recordings', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_EMPTY_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toEqual([]);\n });\n\n it.each([\n {statusCode: 400, expected: ERROR_DETAILS_400},\n {statusCode: 401, expected: ERROR_DETAILS_401},\n {statusCode: 404, expected: ERROR_DETAILS_404},\n ])('handles a $statusCode error', async ({statusCode, expected}) => {\n const failurePayload = {statusCode};\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>failurePayload));\n\n const response = await connector.getCallRecording({type: RecordingRequestType.LIST});\n\n expect(response).toStrictEqual(expected);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith({statusCode}, loggerContext);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to get recordings'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('getRecording', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDING};\n\n it('successfully fetches a single recording', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.DETAIL,\n recordingId: RECORDING_ONE.id,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.recording?.id).toBe(RECORDING_ONE.id);\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`/convergedRecordings/${RECORDING_ONE.id}`);\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with recordingId=${RECORDING_ONE.id}`,\n loggerContext\n );\n });\n\n it('handles a 404 error when the recording does not exist', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 404}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.DETAIL,\n recordingId: 'missing-id',\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_404);\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('getRecordingsByCallSessionId', () => {\n it('returns only the recordings matching the call session id', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toHaveLength(1);\n expect(response.data.recordings?.[0].id).toBe(RECORDING_ONE.id);\n });\n\n it('returns an empty list when no recording matches', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: 'non-existent-session',\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.data.recordings).toEqual([]);\n });\n\n it('propagates the error response from the underlying list call', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 401}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_401);\n });\n\n it('forwards list options to the underlying list query to widen the scan', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_LIST_BODY);\n webex.request.mockResolvedValue(payload);\n\n await connector.getCallRecording({\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: CALL_SESSION_ID,\n options: {\n from: '2024-05-01T00:00:00.000Z',\n to: '2024-05-31T00:00:00.000Z',\n status: RecordingStatus.DELETED,\n max: 100,\n },\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain('from=2024-05-01T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('to=2024-05-31T00%3A00%3A00.000Z');\n expect(callArgs.uri).toContain('status=deleted');\n expect(callArgs.uri).toContain('max=100');\n });\n });\n\n describe('getRecordingMetadata', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.GET_RECORDING_METADATA};\n\n it('successfully fetches the recording metadata', async () => {\n const payload = <WebexRequestPayload>(<unknown>MOCK_RECORDING_METADATA_BODY);\n webex.request.mockResolvedValue(payload);\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.METADATA,\n recordingId: RECORDING_ONE.id,\n });\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n expect(response.data.metadata?.callSessionId).toBe(CALL_SESSION_ID);\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain(`/convergedRecordings/${RECORDING_ONE.id}/metadata`);\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n });\n\n it('handles a 400 error', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 400}));\n\n const response = await connector.getCallRecording({\n type: RecordingRequestType.METADATA,\n recordingId: 'bad-id',\n });\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to get recording metadata'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('deleteRecording', () => {\n const loggerContext = {file: CALL_RECORDING_FILE, method: METHODS.DELETE_RECORDING};\n\n it('successfully soft-deletes a recording via POST /convergedRecordings/softDelete', async () => {\n webex.request.mockResolvedValue(<WebexRequestPayload>(<unknown>{statusCode: 204}));\n\n const response = await connector.deleteRecording(RECORDING_ONE.id);\n\n expect(response.statusCode).toBe(204);\n expect(response.message).toBe('SUCCESS');\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.uri).toContain('/convergedRecordings/softDelete');\n expect(callArgs.uri).not.toContain(`/convergedRecordings/${RECORDING_ONE.id}`);\n expect(callArgs.method).toBe(HTTP_METHODS.POST);\n expect(callArgs.service).toBe('hydraDeveloperApi');\n expect(callArgs.body).toStrictEqual({recordingIds: [RECORDING_ONE.id]});\n });\n\n it('ignores deprecated reason/comment options (compliance DELETE is not exposed)', async () => {\n webex.request.mockResolvedValue(<WebexRequestPayload>(<unknown>{statusCode: 204}));\n\n await connector.deleteRecording(RECORDING_ONE.id, {\n reason: 'audit',\n comment: 'Maintain data privacy',\n });\n\n const callArgs = webex.request.mock.calls[webex.request.mock.calls.length - 1][0];\n expect(callArgs.method).toBe(HTTP_METHODS.POST);\n expect(callArgs.body).toStrictEqual({recordingIds: [RECORDING_ONE.id]});\n });\n\n it('handles a 400 error', async () => {\n webex.request.mockRejectedValue(<WebexRequestPayload>(<unknown>{statusCode: 400}));\n\n const response = await connector.deleteRecording('bad-id');\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Failed to delete recording'),\n loggerContext\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('URL resolution', () => {\n it('resolves the recording base URL from the services catalog (hydraDeveloperApi)', () => {\n const localConnector = new WxcCallRecordingConnector(getTestUtilsWebex(), {\n level: LOGGER.INFO,\n });\n\n expect(localConnector['recordingServiceUrl']).toBe('https://integration.webexapis.com/v1');\n });\n });\n\n describe('Recording Mercury events', () => {\n let mockOn: jest.Mock;\n\n const findHandler = (eventKey: string) => {\n const calls = mockOn.mock.calls.filter((call) => call[0] === eventKey);\n\n return calls[calls.length - 1][1];\n };\n\n beforeEach(() => {\n mockOn = webex.internal.mercury.on as unknown as jest.Mock;\n mockOn.mockClear();\n connector = new WxcCallRecordingConnector(webex, {level: LOGGER.INFO});\n });\n\n it('registers listeners for all three recording mercury events', () => {\n const registeredKeys = mockOn.mock.calls.map((call) => call[0]);\n\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.CREATED);\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.UPDATED);\n expect(registeredKeys).toContain(RECORDING_MERCURY_KEYS.DELETED);\n });\n\n it('emits the recording created event', (done) => {\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_CREATED_EVENT);\n done();\n });\n\n findHandler(RECORDING_MERCURY_KEYS.CREATED)(MOCK_RECORDING_CREATED_EVENT);\n });\n\n /**\n * The backend delivers the recording lifecycle through `convergedRecordings.updated` events\n * qualified by `eventSubType`. The connector routes them to the intuitive typed event:\n * name: TestCase name\n * event: the raw `updated` Mercury event (with its eventSubType)\n * expectedKey: the typed event the connector should emit\n */\n const updatedRoutingData: {\n name: string;\n event: RecordingEvent;\n expectedKey: COMMON_EVENT_KEYS;\n }[] = [\n {\n name: 'TRASH (soft delete) -> callRecording:deleted',\n event: MOCK_RECORDING_TRASH_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_DELETED,\n },\n {\n name: 'PURGE (permanent delete) -> callRecording:deleted',\n event: MOCK_RECORDING_PURGE_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_DELETED,\n },\n {\n name: 'RESTORE (restored from trash) -> callRecording:created',\n event: MOCK_RECORDING_RESTORE_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_CREATED,\n },\n {\n name: 'SUMMARY_CREATE (summary/transcript ready) -> callRecording:updated',\n event: MOCK_RECORDING_UPDATED_EVENT,\n expectedKey: COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED,\n },\n ];\n\n it.each(updatedRoutingData)(\n 'routes a convergedRecordings.updated event by eventSubType: $name',\n ({event, expectedKey}) => {\n const spy = jest.fn();\n connector.on(expectedKey, spy);\n\n findHandler(RECORDING_MERCURY_KEYS.UPDATED)(event);\n\n expect(spy).toHaveBeenCalledWith(event);\n }\n );\n\n it('emits the recording deleted event', (done) => {\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_DELETED_EVENT);\n done();\n });\n\n findHandler(RECORDING_MERCURY_KEYS.DELETED)(MOCK_RECORDING_DELETED_EVENT);\n });\n\n it('ignores malformed events without an activity payload', () => {\n const spy = jest.fn();\n connector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, spy);\n\n findHandler(RECORDING_MERCURY_KEYS.CREATED)({} as RecordingEvent);\n\n expect(spy).not.toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -4,11 +4,12 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
4
4
  _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.WEBEX_USER_REQUEST_HEADER = exports.TOPIC = exports.TO = exports.STORAGE_REGION = exports.STATUS = exports.SERVICE_TYPE = exports.RECORDING_NOT_FOUND_MESSAGE = exports.OWNER_TYPE = exports.METHODS = exports.METADATA = exports.MAX = exports.LOCATION_ID = exports.FROM = exports.FORMAT = exports.DEFAULT_STATUS = exports.DEFAULT_NUMBER_OF_DAYS = exports.DEFAULT_MAX = exports.CONVERGED_RECORDINGS = exports.CALL_RECORDING_FILE = void 0;
7
+ exports.WEBEX_USER_REQUEST_HEADER = exports.TOPIC = exports.TO = exports.STORAGE_REGION = exports.STATUS = exports.SOFT_DELETE = exports.SERVICE_TYPE = exports.RECORDING_NOT_FOUND_MESSAGE = exports.OWNER_TYPE = exports.METHODS = exports.METADATA = exports.MAX = exports.LOCATION_ID = exports.FROM = exports.FORMAT = exports.DEFAULT_STATUS = exports.DEFAULT_NUMBER_OF_DAYS = exports.DEFAULT_MAX = exports.CONVERGED_RECORDINGS = exports.CALL_RECORDING_FILE = void 0;
8
8
  var CALL_RECORDING_FILE = exports.CALL_RECORDING_FILE = 'CallRecording';
9
9
 
10
10
  // Recording API (hydra developer API) endpoint segments.
11
11
  var CONVERGED_RECORDINGS = exports.CONVERGED_RECORDINGS = 'convergedRecordings';
12
+ var SOFT_DELETE = exports.SOFT_DELETE = 'softDelete';
12
13
  var METADATA = exports.METADATA = 'metadata';
13
14
 
14
15
  // Query parameter keys for the list request.
@@ -1 +1 @@
1
- {"version":3,"names":["CALL_RECORDING_FILE","exports","CONVERGED_RECORDINGS","METADATA","FROM","TO","STATUS","MAX","SERVICE_TYPE","FORMAT","OWNER_TYPE","STORAGE_REGION","LOCATION_ID","TOPIC","DEFAULT_STATUS","DEFAULT_MAX","DEFAULT_NUMBER_OF_DAYS","WEBEX_USER_REQUEST_HEADER","RECORDING_NOT_FOUND_MESSAGE","METHODS","INITIALIZE_BACKEND_CONNECTOR","GET_CALL_RECORDING","GET_RECORDINGS","GET_RECORDING","GET_RECORDINGS_BY_CALL_SESSION_ID","GET_RECORDING_METADATA","DELETE_RECORDING"],"sources":["constants.ts"],"sourcesContent":["export const CALL_RECORDING_FILE = 'CallRecording';\n\n// Recording API (hydra developer API) endpoint segments.\nexport const CONVERGED_RECORDINGS = 'convergedRecordings';\nexport const METADATA = 'metadata';\n\n// Query parameter keys for the list request.\nexport const FROM = 'from';\nexport const TO = 'to';\nexport const STATUS = 'status';\nexport const MAX = 'max';\nexport const SERVICE_TYPE = 'serviceType';\nexport const FORMAT = 'format';\nexport const OWNER_TYPE = 'ownerType';\nexport const STORAGE_REGION = 'storageRegion';\nexport const LOCATION_ID = 'locationId';\nexport const TOPIC = 'topic';\n\n// Default list query values.\nexport const DEFAULT_STATUS = 'available';\nexport const DEFAULT_MAX = 30;\n\n// Default lookback window (in days) used to derive `from` when the caller does not provide one.\n// The Converged Recordings list API only accepts a `from`/`to` interval of at most 30 days, so the\n// default must stay within that limit; a larger default window would be rejected by the API.\nexport const DEFAULT_NUMBER_OF_DAYS = 30;\n\n// Header used to flag an explicit end-user request (rate-limit bypass). Off by default.\nexport const WEBEX_USER_REQUEST_HEADER = 'WebexUserRequest';\n\nexport const RECORDING_NOT_FOUND_MESSAGE = 'No recordings found for the given call session id.';\n\n// Method names (for structured logging).\nexport const METHODS = {\n INITIALIZE_BACKEND_CONNECTOR: 'initializeBackendConnector',\n GET_CALL_RECORDING: 'getCallRecording',\n GET_RECORDINGS: 'getRecordings',\n GET_RECORDING: 'getRecording',\n GET_RECORDINGS_BY_CALL_SESSION_ID: 'getRecordingsByCallSessionId',\n GET_RECORDING_METADATA: 'getRecordingMetadata',\n DELETE_RECORDING: 'deleteRecording',\n};\n"],"mappings":";;;;;;;AAAO,IAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,eAAe;;AAElD;AACO,IAAME,oBAAoB,GAAAD,OAAA,CAAAC,oBAAA,GAAG,qBAAqB;AAClD,IAAMC,QAAQ,GAAAF,OAAA,CAAAE,QAAA,GAAG,UAAU;;AAElC;AACO,IAAMC,IAAI,GAAAH,OAAA,CAAAG,IAAA,GAAG,MAAM;AACnB,IAAMC,EAAE,GAAAJ,OAAA,CAAAI,EAAA,GAAG,IAAI;AACf,IAAMC,MAAM,GAAAL,OAAA,CAAAK,MAAA,GAAG,QAAQ;AACvB,IAAMC,GAAG,GAAAN,OAAA,CAAAM,GAAA,GAAG,KAAK;AACjB,IAAMC,YAAY,GAAAP,OAAA,CAAAO,YAAA,GAAG,aAAa;AAClC,IAAMC,MAAM,GAAAR,OAAA,CAAAQ,MAAA,GAAG,QAAQ;AACvB,IAAMC,UAAU,GAAAT,OAAA,CAAAS,UAAA,GAAG,WAAW;AAC9B,IAAMC,cAAc,GAAAV,OAAA,CAAAU,cAAA,GAAG,eAAe;AACtC,IAAMC,WAAW,GAAAX,OAAA,CAAAW,WAAA,GAAG,YAAY;AAChC,IAAMC,KAAK,GAAAZ,OAAA,CAAAY,KAAA,GAAG,OAAO;;AAE5B;AACO,IAAMC,cAAc,GAAAb,OAAA,CAAAa,cAAA,GAAG,WAAW;AAClC,IAAMC,WAAW,GAAAd,OAAA,CAAAc,WAAA,GAAG,EAAE;;AAE7B;AACA;AACA;AACO,IAAMC,sBAAsB,GAAAf,OAAA,CAAAe,sBAAA,GAAG,EAAE;;AAExC;AACO,IAAMC,yBAAyB,GAAAhB,OAAA,CAAAgB,yBAAA,GAAG,kBAAkB;AAEpD,IAAMC,2BAA2B,GAAAjB,OAAA,CAAAiB,2BAAA,GAAG,oDAAoD;;AAE/F;AACO,IAAMC,OAAO,GAAAlB,OAAA,CAAAkB,OAAA,GAAG;EACrBC,4BAA4B,EAAE,4BAA4B;EAC1DC,kBAAkB,EAAE,kBAAkB;EACtCC,cAAc,EAAE,eAAe;EAC/BC,aAAa,EAAE,cAAc;EAC7BC,iCAAiC,EAAE,8BAA8B;EACjEC,sBAAsB,EAAE,sBAAsB;EAC9CC,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["CALL_RECORDING_FILE","exports","CONVERGED_RECORDINGS","SOFT_DELETE","METADATA","FROM","TO","STATUS","MAX","SERVICE_TYPE","FORMAT","OWNER_TYPE","STORAGE_REGION","LOCATION_ID","TOPIC","DEFAULT_STATUS","DEFAULT_MAX","DEFAULT_NUMBER_OF_DAYS","WEBEX_USER_REQUEST_HEADER","RECORDING_NOT_FOUND_MESSAGE","METHODS","INITIALIZE_BACKEND_CONNECTOR","GET_CALL_RECORDING","GET_RECORDINGS","GET_RECORDING","GET_RECORDINGS_BY_CALL_SESSION_ID","GET_RECORDING_METADATA","DELETE_RECORDING"],"sources":["constants.ts"],"sourcesContent":["export const CALL_RECORDING_FILE = 'CallRecording';\n\n// Recording API (hydra developer API) endpoint segments.\nexport const CONVERGED_RECORDINGS = 'convergedRecordings';\nexport const SOFT_DELETE = 'softDelete';\nexport const METADATA = 'metadata';\n\n// Query parameter keys for the list request.\nexport const FROM = 'from';\nexport const TO = 'to';\nexport const STATUS = 'status';\nexport const MAX = 'max';\nexport const SERVICE_TYPE = 'serviceType';\nexport const FORMAT = 'format';\nexport const OWNER_TYPE = 'ownerType';\nexport const STORAGE_REGION = 'storageRegion';\nexport const LOCATION_ID = 'locationId';\nexport const TOPIC = 'topic';\n\n// Default list query values.\nexport const DEFAULT_STATUS = 'available';\nexport const DEFAULT_MAX = 30;\n\n// Default lookback window (in days) used to derive `from` when the caller does not provide one.\n// The Converged Recordings list API only accepts a `from`/`to` interval of at most 30 days, so the\n// default must stay within that limit; a larger default window would be rejected by the API.\nexport const DEFAULT_NUMBER_OF_DAYS = 30;\n\n// Header used to flag an explicit end-user request (rate-limit bypass). Off by default.\nexport const WEBEX_USER_REQUEST_HEADER = 'WebexUserRequest';\n\nexport const RECORDING_NOT_FOUND_MESSAGE = 'No recordings found for the given call session id.';\n\n// Method names (for structured logging).\nexport const METHODS = {\n INITIALIZE_BACKEND_CONNECTOR: 'initializeBackendConnector',\n GET_CALL_RECORDING: 'getCallRecording',\n GET_RECORDINGS: 'getRecordings',\n GET_RECORDING: 'getRecording',\n GET_RECORDINGS_BY_CALL_SESSION_ID: 'getRecordingsByCallSessionId',\n GET_RECORDING_METADATA: 'getRecordingMetadata',\n DELETE_RECORDING: 'deleteRecording',\n};\n"],"mappings":";;;;;;;AAAO,IAAMA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,eAAe;;AAElD;AACO,IAAME,oBAAoB,GAAAD,OAAA,CAAAC,oBAAA,GAAG,qBAAqB;AAClD,IAAMC,WAAW,GAAAF,OAAA,CAAAE,WAAA,GAAG,YAAY;AAChC,IAAMC,QAAQ,GAAAH,OAAA,CAAAG,QAAA,GAAG,UAAU;;AAElC;AACO,IAAMC,IAAI,GAAAJ,OAAA,CAAAI,IAAA,GAAG,MAAM;AACnB,IAAMC,EAAE,GAAAL,OAAA,CAAAK,EAAA,GAAG,IAAI;AACf,IAAMC,MAAM,GAAAN,OAAA,CAAAM,MAAA,GAAG,QAAQ;AACvB,IAAMC,GAAG,GAAAP,OAAA,CAAAO,GAAA,GAAG,KAAK;AACjB,IAAMC,YAAY,GAAAR,OAAA,CAAAQ,YAAA,GAAG,aAAa;AAClC,IAAMC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,QAAQ;AACvB,IAAMC,UAAU,GAAAV,OAAA,CAAAU,UAAA,GAAG,WAAW;AAC9B,IAAMC,cAAc,GAAAX,OAAA,CAAAW,cAAA,GAAG,eAAe;AACtC,IAAMC,WAAW,GAAAZ,OAAA,CAAAY,WAAA,GAAG,YAAY;AAChC,IAAMC,KAAK,GAAAb,OAAA,CAAAa,KAAA,GAAG,OAAO;;AAE5B;AACO,IAAMC,cAAc,GAAAd,OAAA,CAAAc,cAAA,GAAG,WAAW;AAClC,IAAMC,WAAW,GAAAf,OAAA,CAAAe,WAAA,GAAG,EAAE;;AAE7B;AACA;AACA;AACO,IAAMC,sBAAsB,GAAAhB,OAAA,CAAAgB,sBAAA,GAAG,EAAE;;AAExC;AACO,IAAMC,yBAAyB,GAAAjB,OAAA,CAAAiB,yBAAA,GAAG,kBAAkB;AAEpD,IAAMC,2BAA2B,GAAAlB,OAAA,CAAAkB,2BAAA,GAAG,oDAAoD;;AAE/F;AACO,IAAMC,OAAO,GAAAnB,OAAA,CAAAmB,OAAA,GAAG;EACrBC,4BAA4B,EAAE,4BAA4B;EAC1DC,kBAAkB,EAAE,kBAAkB;EACtCC,cAAc,EAAE,eAAe;EAC/BC,aAAa,EAAE,cAAc;EAC7BC,iCAAiC,EAAE,8BAA8B;EACjEC,sBAAsB,EAAE,sBAAsB;EAC9CC,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
@@ -80,8 +80,8 @@ var AiGenerationStatus = exports.AiGenerationStatus = /*#__PURE__*/function (AiG
80
80
  * `WebexUserRequest` header (ad-hoc rate-limit bypass), defaulting to `false`.
81
81
  */
82
82
  /**
83
- * Optional request body for {@link ICallRecording.deleteRecording}. Both fields are only required
84
- * when a Compliance Officer deletes another user's recording.
83
+ * @deprecated Ignored by {@link ICallRecording.deleteRecording}. Retained for backward-compatible
84
+ * signatures only. Compliance permanent delete is not exposed on the CallRecording client.
85
85
  */
86
86
  /**
87
87
  * Discriminator for {@link GetCallRecordingRequest}. Selects which read operation
@@ -131,6 +131,7 @@ var RecordingRequestType = exports.RecordingRequestType = /*#__PURE__*/function
131
131
  *
132
132
  * Provides read access to Post Call Recordings through a single {@link getCallRecording} method
133
133
  * (listing, single fetch, lookup by call session, and metadata — selected by the request `type`),
134
- * permanent deletion of a recording, and emits recording lifecycle events received over Mercury.
134
+ * moves a recording to the recycle bin (soft delete), and emits recording lifecycle events received
135
+ * over Mercury.
135
136
  */
136
137
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["RecordingStatus","exports","AiGenerationStatus","RecordingRequestType"],"sources":["types.ts"],"sourcesContent":["import {Eventing} from '../Events/impl';\nimport {CallRecordingEventTypes} from '../Events/types';\nimport {LOGGER} from '../Logger/types';\n\nexport interface LoggerInterface {\n level: LOGGER;\n}\n\n/**\n * Status of a converged recording, used both as the response field and as the list filter.\n *\n * - `available`: the recording is available (default).\n * - `deleted`: the recording has been moved into the recycle bin.\n */\nexport enum RecordingStatus {\n AVAILABLE = 'available',\n DELETED = 'deleted',\n}\n\n/**\n * Status of an AI-generated artifact (summary / suggested notes / action items).\n */\nexport enum AiGenerationStatus {\n NOT_STARTED = 'NOT_STARTED',\n IN_PROGRESS = 'IN_PROGRESS',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n}\n\n/**\n * Which side of the call the recording owner was on, as reported by `serviceData.personality`:\n * - `originator`: the owner placed the call (the remote party is `calledParty`).\n * - `terminator`: the owner received the call (the remote party is `callingParty`).\n *\n * Use {@link getRemoteParty} to resolve the other party without having to branch on this manually.\n */\nexport type RecordingPersonality = 'originator' | 'terminator';\n\n/**\n * The acting entity behind a call party. For Webex users `type` is `USER` and `id` is the Webex\n * person UUID — the identifier accepted by the avatar (`@webex/internal-plugin-avatar`) and\n * presence (DSS) services. External/PSTN parties may have only a `number`/`name` on the parent\n * {@link RecordingParty} and no `actor.id`.\n */\nexport type RecordingActor = {\n type?: string;\n id?: string;\n email?: string;\n};\n\n/**\n * A party (calling or called) involved in the recorded call. `actor.id` is the resolvable person\n * UUID when the party is a Webex user; `number`/`name` are the dialable number and display name.\n */\nexport type RecordingParty = {\n actor?: RecordingActor;\n number?: string;\n name?: string;\n};\n\n/**\n * Service-specific data attached to a converged recording. For calling recordings this carries the\n * `locationId` and the `callSessionId` shared with the originating call session.\n *\n * The party details (`personality`, `callingParty`, `calledParty`) identify who the call was with\n * and are returned by the metadata endpoint (`GET /convergedRecordings/{recordingId}/metadata`);\n * the list endpoint only populates `locationId`/`callSessionId`. Resolve the remote participant's\n * person UUID (for avatar/presence) via `getRemoteParty(serviceData)?.actor?.id`.\n */\nexport type RecordingServiceData = {\n callRecordingId?: string;\n locationId?: string;\n callSessionId?: string;\n personality?: RecordingPersonality;\n callingParty?: RecordingParty;\n calledParty?: RecordingParty;\n [key: string]: unknown;\n};\n\n/**\n * Temporary, direct download links for a recording's media, returned by\n * `GET /convergedRecordings/{recordingId}`. Only available for authorized users / Compliance\n * Officers and absent when downloading is prevented.\n */\nexport type TemporaryDirectDownloadLinks = {\n audioDownloadLink?: string;\n transcriptDownloadLink?: string;\n expiration?: string;\n};\n\n/**\n * A converged recording as returned by `GET /convergedRecordings` (list `items[]`) and\n * `GET /convergedRecordings/{recordingId}`.\n *\n * Field mapping note (matches the public Webex Converged Recordings API):\n * - `id` is the recording id used by {@link ICallRecording.getRecording}.\n * - `serviceData.callSessionId` is the call session id used by\n * {@link ICallRecording.getRecordingsByCallSessionId}.\n */\nexport type Recording = {\n id: string;\n topic?: string;\n createTime?: string;\n timeRecorded?: string;\n format?: string;\n serviceType?: string;\n durationSeconds?: number;\n sizeBytes?: number;\n status?: RecordingStatus;\n ownerId?: string;\n ownerEmail?: string;\n ownerType?: string;\n storageRegion?: string;\n serviceData?: RecordingServiceData;\n temporaryDirectDownloadLinks?: TemporaryDirectDownloadLinks;\n};\n\n/**\n * Raw list response body returned by `GET /convergedRecordings`.\n */\nexport type RecordingListBody = {\n items?: Recording[];\n};\n\n/**\n * Metadata returned by `GET /convergedRecordings/{recordingUUID}/metadata`.\n * The structure is preserved as returned by the backend; optional typed fields are provided\n * for the well-known properties.\n */\nexport type RecordingMetadataOwner = {\n ownerID?: string;\n ownerEmail?: string;\n ownerName?: string;\n orgID?: string;\n};\n\nexport type RecordingMetadataParticipant = {\n id?: string;\n name?: string;\n email?: string;\n phoneNumber?: string;\n joinTime?: string;\n leaveTime?: string;\n};\n\nexport type RecordingMediaStream = {\n streamId?: string;\n type?: string;\n codec?: string;\n durationMS?: number;\n};\n\nexport type RecordingExtensionData = {\n callData?: Record<string, unknown>;\n acd?: Record<string, unknown>;\n redirectInfo?: Record<string, unknown>;\n};\n\nexport type RecordingMetadata = {\n id?: string;\n callSessionId?: string;\n owner?: RecordingMetadataOwner;\n session?: Record<string, unknown>;\n participants?: RecordingMetadataParticipant[];\n mediaStreams?: RecordingMediaStream[];\n extensionData?: RecordingExtensionData;\n /**\n * Service-specific data, including the call party details (`personality`, `callingParty`,\n * `calledParty`) used to resolve the remote participant for avatar/presence. See\n * {@link getRemoteParty}.\n */\n serviceData?: RecordingServiceData;\n [key: string]: unknown;\n};\n\n/**\n * Options for {@link ICallRecording.getRecordings}. All fields are optional and are passed through\n * to the recording API as query parameters where supported. `webexUserRequest` toggles the\n * `WebexUserRequest` header (ad-hoc rate-limit bypass), defaulting to `false`.\n */\nexport type GetRecordingsOptions = {\n /**\n * ISO-8601 start of the time window (inclusive). When omitted, it is derived from `days`\n * (`now - days`), mirroring CallHistory's mandatory `from` date.\n */\n from?: string;\n /**\n * ISO-8601 end of the time window (inclusive). When omitted, it defaults to the current time\n * (`now`). The API requires both `from` and `to` to return results.\n */\n to?: string;\n /**\n * Lookback window in days used to derive `from` when `from` is not provided. Defaults to `30`.\n * The list API only accepts a `from`/`to` interval of at most 30 days; larger windows are\n * rejected, so callers must keep custom values within that limit.\n * Ignored when an explicit `from` is supplied.\n */\n days?: number;\n /** Filter by recording status. Defaults to `available`. */\n status?: RecordingStatus;\n /** Maximum number of records to return per page. Defaults to `30`. */\n max?: number;\n /**\n * Filter by the service that produced the recording (e.g. `'calling'`). Sent only when provided;\n * when omitted the API applies its own default.\n */\n serviceType?: string;\n /** Filter by recording media format (e.g. `'MP3'`, `'MP4'`). Sent only when provided. */\n format?: string;\n /** Filter by recording owner type (e.g. `'user'`). Sent only when provided. */\n ownerType?: string;\n /** Filter by storage region (e.g. `'US'`). Sent only when provided. */\n storageRegion?: string;\n /** Filter by the location id the recording belongs to. Sent only when provided. */\n locationId?: string;\n /** Filter by recording topic. Sent only when provided. */\n topic?: string;\n /** When true, sends the `WebexUserRequest: true` header. Defaults to false. */\n webexUserRequest?: boolean;\n};\n\nexport type RecordingListResponse = {\n statusCode: number;\n data: {\n recordings?: Recording[];\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingResponse = {\n statusCode: number;\n data: {\n recording?: Recording;\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingMetadataResponse = {\n statusCode: number;\n data: {\n metadata?: RecordingMetadata;\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingDeleteResponse = {\n statusCode: number;\n data: {\n error?: string;\n };\n message: string | null;\n};\n\n/**\n * Optional request body for {@link ICallRecording.deleteRecording}. Both fields are only required\n * when a Compliance Officer deletes another user's recording.\n */\nexport type DeleteRecordingOptions = {\n /** Reason for deleting the recording (e.g. `audit`). */\n reason?: string;\n /** Compliance Officer's explanation for the deletion. Max 255 characters. */\n comment?: string;\n};\n\n/**\n * Discriminator for {@link GetCallRecordingRequest}. Selects which read operation\n * {@link ICallRecording.getCallRecording} performs based on the request body.\n *\n * - `LIST`: list the current user's recordings.\n * - `DETAIL`: fetch a single recording (with download/playback links).\n * - `METADATA`: fetch a single recording's metadata document.\n * - `BY_CALL_SESSION`: list recordings tied to a call session id (client-side filter).\n */\nexport enum RecordingRequestType {\n LIST = 'list',\n DETAIL = 'detail',\n METADATA = 'metadata',\n BY_CALL_SESSION = 'byCallSession',\n}\n\n/**\n * Lists the current user's converged recordings.\n * Maps to `GET /convergedRecordings` with the query params from {@link GetRecordingsOptions}.\n */\nexport type ListRecordingsRequest = {\n type: RecordingRequestType.LIST;\n options?: GetRecordingsOptions;\n};\n\n/**\n * Fetches a single converged recording by id.\n * Maps to `GET /convergedRecordings/{recordingId}`.\n */\nexport type DetailRecordingRequest = {\n type: RecordingRequestType.DETAIL;\n recordingId: string;\n};\n\n/**\n * Fetches the metadata document for a single recording.\n * Maps to `GET /convergedRecordings/{recordingId}/metadata`.\n */\nexport type MetadataRecordingRequest = {\n type: RecordingRequestType.METADATA;\n recordingId: string;\n};\n\n/**\n * Returns the recordings tied to a call session id (`serviceData.callSessionId`).\n * Fetches a list and filters client-side; `options` widen the scanned set.\n */\nexport type CallSessionRecordingsRequest = {\n type: RecordingRequestType.BY_CALL_SESSION;\n callSessionId: string;\n options?: GetRecordingsOptions;\n};\n\n/**\n * Discriminated union of every read request accepted by {@link ICallRecording.getCallRecording}.\n * The `type` field selects the operation and constrains the rest of the body, while\n * {@link RecordingResponseFor} maps each member to its concrete response type so the caller keeps\n * full type inference from a single method.\n */\nexport type GetCallRecordingRequest =\n | ListRecordingsRequest\n | DetailRecordingRequest\n | MetadataRecordingRequest\n | CallSessionRecordingsRequest;\n\n/**\n * Maps a {@link GetCallRecordingRequest} member to the response type\n * {@link ICallRecording.getCallRecording} resolves with for that request, preserving per-request\n * return-type inference behind the single method.\n */\nexport type RecordingResponseFor<T extends GetCallRecordingRequest> =\n T extends DetailRecordingRequest\n ? RecordingResponse\n : T extends MetadataRecordingRequest\n ? RecordingMetadataResponse\n : RecordingListResponse;\n\n/**\n * Interface for the CallRecording client.\n *\n * Provides read access to Post Call Recordings through a single {@link getCallRecording} method\n * (listing, single fetch, lookup by call session, and metadata — selected by the request `type`),\n * permanent deletion of a recording, and emits recording lifecycle events received over Mercury.\n */\nexport interface ICallRecording extends Eventing<CallRecordingEventTypes> {\n /**\n * Reads Post Call Recordings. The {@link GetCallRecordingRequest} `type` selects the operation\n * and constrains the rest of the request body; the resolved response type is inferred per\n * request via {@link RecordingResponseFor}:\n *\n * - `LIST` (`GET /convergedRecordings`) -> {@link RecordingListResponse}. The query params come\n * from {@link GetRecordingsOptions}; both a `from` lower bound (derived from `days` when not\n * provided) and a `to` upper bound (defaults to `now`) are always sent, because the API only\n * returns results when the time window is bounded on both ends.\n * - `DETAIL` (`GET /convergedRecordings/{recordingId}`) -> {@link RecordingResponse}.\n * - `METADATA` (`GET /convergedRecordings/{recordingId}/metadata`) ->\n * {@link RecordingMetadataResponse}.\n * - `BY_CALL_SESSION` -> {@link RecordingListResponse}. The recording API has no confirmed\n * server-side filter for call session id, so this fetches a list and filters client-side on\n * `serviceData.callSessionId`. The scan is bounded by the list query, so pass `options` to\n * widen the time window/status/page when the target session may fall outside the defaults.\n *\n * @param request - The discriminated read request.\n *\n * @example\n * ```javascript\n * const list = await callRecording.getCallRecording({type: RecordingRequestType.LIST, options: {max: 30}});\n * const one = await callRecording.getCallRecording({type: RecordingRequestType.DETAIL, recordingId});\n * const meta = await callRecording.getCallRecording({type: RecordingRequestType.METADATA, recordingId});\n * const bySession = await callRecording.getCallRecording({\n * type: RecordingRequestType.BY_CALL_SESSION,\n * callSessionId,\n * options: {days: 30, max: 100},\n * });\n * ```\n */\n getCallRecording<T extends GetCallRecordingRequest>(request: T): Promise<RecordingResponseFor<T>>;\n\n /**\n * Permanently deletes a single recording.\n *\n * Calls `DELETE /convergedRecordings/{recordingId}`. Per the API, the deleted recording\n * **cannot be recovered**; when a Compliance Officer deletes another user's recording it is\n * purged from Webex and becomes inaccessible to all parties. Requires the\n * `spark-compliance:recordings_write` scope on the access token.\n *\n * `options.reason` / `options.comment` are only required when a Compliance Officer deletes\n * another user's recording and are sent as the request body when provided.\n *\n * @param recordingId - The recording id (`id`) to delete.\n * @param options - Optional `reason`/`comment` (Compliance Officer deletions).\n *\n * @example\n * ```javascript\n * await callRecording.deleteRecording(recordingId);\n * await callRecording.deleteRecording(recordingId, {reason: 'audit', comment: 'Maintain data privacy'});\n * ```\n */\n deleteRecording(\n recordingId: string,\n options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse>;\n}\n"],"mappings":";;;;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AALA,IAMYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAK3B;AACA;AACA;AAFA,IAGYE,kBAAkB,GAAAD,OAAA,CAAAC,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAO9B;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAmBA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AA+CA;AACA;AACA;AACA;AACA;AA6EA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,IASYC,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAOhC;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["RecordingStatus","exports","AiGenerationStatus","RecordingRequestType"],"sources":["types.ts"],"sourcesContent":["import {Eventing} from '../Events/impl';\nimport {CallRecordingEventTypes} from '../Events/types';\nimport {LOGGER} from '../Logger/types';\n\nexport interface LoggerInterface {\n level: LOGGER;\n}\n\n/**\n * Status of a converged recording, used both as the response field and as the list filter.\n *\n * - `available`: the recording is available (default).\n * - `deleted`: the recording has been moved into the recycle bin.\n */\nexport enum RecordingStatus {\n AVAILABLE = 'available',\n DELETED = 'deleted',\n}\n\n/**\n * Status of an AI-generated artifact (summary / suggested notes / action items).\n */\nexport enum AiGenerationStatus {\n NOT_STARTED = 'NOT_STARTED',\n IN_PROGRESS = 'IN_PROGRESS',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n}\n\n/**\n * Which side of the call the recording owner was on, as reported by `serviceData.personality`:\n * - `originator`: the owner placed the call (the remote party is `calledParty`).\n * - `terminator`: the owner received the call (the remote party is `callingParty`).\n *\n * Use {@link getRemoteParty} to resolve the other party without having to branch on this manually.\n */\nexport type RecordingPersonality = 'originator' | 'terminator';\n\n/**\n * The acting entity behind a call party. For Webex users `type` is `USER` and `id` is the Webex\n * person UUID — the identifier accepted by the avatar (`@webex/internal-plugin-avatar`) and\n * presence (DSS) services. External/PSTN parties may have only a `number`/`name` on the parent\n * {@link RecordingParty} and no `actor.id`.\n */\nexport type RecordingActor = {\n type?: string;\n id?: string;\n email?: string;\n};\n\n/**\n * A party (calling or called) involved in the recorded call. `actor.id` is the resolvable person\n * UUID when the party is a Webex user; `number`/`name` are the dialable number and display name.\n */\nexport type RecordingParty = {\n actor?: RecordingActor;\n number?: string;\n name?: string;\n};\n\n/**\n * Service-specific data attached to a converged recording. For calling recordings this carries the\n * `locationId` and the `callSessionId` shared with the originating call session.\n *\n * The party details (`personality`, `callingParty`, `calledParty`) identify who the call was with\n * and are returned by the metadata endpoint (`GET /convergedRecordings/{recordingId}/metadata`);\n * the list endpoint only populates `locationId`/`callSessionId`. Resolve the remote participant's\n * person UUID (for avatar/presence) via `getRemoteParty(serviceData)?.actor?.id`.\n */\nexport type RecordingServiceData = {\n callRecordingId?: string;\n locationId?: string;\n callSessionId?: string;\n personality?: RecordingPersonality;\n callingParty?: RecordingParty;\n calledParty?: RecordingParty;\n [key: string]: unknown;\n};\n\n/**\n * Temporary, direct download links for a recording's media, returned by\n * `GET /convergedRecordings/{recordingId}`. Only available for authorized users / Compliance\n * Officers and absent when downloading is prevented.\n */\nexport type TemporaryDirectDownloadLinks = {\n audioDownloadLink?: string;\n transcriptDownloadLink?: string;\n expiration?: string;\n};\n\n/**\n * A converged recording as returned by `GET /convergedRecordings` (list `items[]`) and\n * `GET /convergedRecordings/{recordingId}`.\n *\n * Field mapping note (matches the public Webex Converged Recordings API):\n * - `id` is the recording id used by {@link ICallRecording.getRecording}.\n * - `serviceData.callSessionId` is the call session id used by\n * {@link ICallRecording.getRecordingsByCallSessionId}.\n */\nexport type Recording = {\n id: string;\n topic?: string;\n createTime?: string;\n timeRecorded?: string;\n format?: string;\n serviceType?: string;\n durationSeconds?: number;\n sizeBytes?: number;\n status?: RecordingStatus;\n ownerId?: string;\n ownerEmail?: string;\n ownerType?: string;\n storageRegion?: string;\n serviceData?: RecordingServiceData;\n temporaryDirectDownloadLinks?: TemporaryDirectDownloadLinks;\n};\n\n/**\n * Raw list response body returned by `GET /convergedRecordings`.\n */\nexport type RecordingListBody = {\n items?: Recording[];\n};\n\n/**\n * Metadata returned by `GET /convergedRecordings/{recordingUUID}/metadata`.\n * The structure is preserved as returned by the backend; optional typed fields are provided\n * for the well-known properties.\n */\nexport type RecordingMetadataOwner = {\n ownerID?: string;\n ownerEmail?: string;\n ownerName?: string;\n orgID?: string;\n};\n\nexport type RecordingMetadataParticipant = {\n id?: string;\n name?: string;\n email?: string;\n phoneNumber?: string;\n joinTime?: string;\n leaveTime?: string;\n};\n\nexport type RecordingMediaStream = {\n streamId?: string;\n type?: string;\n codec?: string;\n durationMS?: number;\n};\n\nexport type RecordingExtensionData = {\n callData?: Record<string, unknown>;\n acd?: Record<string, unknown>;\n redirectInfo?: Record<string, unknown>;\n};\n\nexport type RecordingMetadata = {\n id?: string;\n callSessionId?: string;\n owner?: RecordingMetadataOwner;\n session?: Record<string, unknown>;\n participants?: RecordingMetadataParticipant[];\n mediaStreams?: RecordingMediaStream[];\n extensionData?: RecordingExtensionData;\n /**\n * Service-specific data, including the call party details (`personality`, `callingParty`,\n * `calledParty`) used to resolve the remote participant for avatar/presence. See\n * {@link getRemoteParty}.\n */\n serviceData?: RecordingServiceData;\n [key: string]: unknown;\n};\n\n/**\n * Options for {@link ICallRecording.getRecordings}. All fields are optional and are passed through\n * to the recording API as query parameters where supported. `webexUserRequest` toggles the\n * `WebexUserRequest` header (ad-hoc rate-limit bypass), defaulting to `false`.\n */\nexport type GetRecordingsOptions = {\n /**\n * ISO-8601 start of the time window (inclusive). When omitted, it is derived from `days`\n * (`now - days`), mirroring CallHistory's mandatory `from` date.\n */\n from?: string;\n /**\n * ISO-8601 end of the time window (inclusive). When omitted, it defaults to the current time\n * (`now`). The API requires both `from` and `to` to return results.\n */\n to?: string;\n /**\n * Lookback window in days used to derive `from` when `from` is not provided. Defaults to `30`.\n * The list API only accepts a `from`/`to` interval of at most 30 days; larger windows are\n * rejected, so callers must keep custom values within that limit.\n * Ignored when an explicit `from` is supplied.\n */\n days?: number;\n /** Filter by recording status. Defaults to `available`. */\n status?: RecordingStatus;\n /** Maximum number of records to return per page. Defaults to `30`. */\n max?: number;\n /**\n * Filter by the service that produced the recording (e.g. `'calling'`). Sent only when provided;\n * when omitted the API applies its own default.\n */\n serviceType?: string;\n /** Filter by recording media format (e.g. `'MP3'`, `'MP4'`). Sent only when provided. */\n format?: string;\n /** Filter by recording owner type (e.g. `'user'`). Sent only when provided. */\n ownerType?: string;\n /** Filter by storage region (e.g. `'US'`). Sent only when provided. */\n storageRegion?: string;\n /** Filter by the location id the recording belongs to. Sent only when provided. */\n locationId?: string;\n /** Filter by recording topic. Sent only when provided. */\n topic?: string;\n /** When true, sends the `WebexUserRequest: true` header. Defaults to false. */\n webexUserRequest?: boolean;\n};\n\nexport type RecordingListResponse = {\n statusCode: number;\n data: {\n recordings?: Recording[];\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingResponse = {\n statusCode: number;\n data: {\n recording?: Recording;\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingMetadataResponse = {\n statusCode: number;\n data: {\n metadata?: RecordingMetadata;\n error?: string;\n };\n message: string | null;\n};\n\nexport type RecordingDeleteResponse = {\n statusCode: number;\n data: {\n error?: string;\n };\n message: string | null;\n};\n\n/**\n * @deprecated Ignored by {@link ICallRecording.deleteRecording}. Retained for backward-compatible\n * signatures only. Compliance permanent delete is not exposed on the CallRecording client.\n */\nexport type DeleteRecordingOptions = {\n /** Reason for deleting the recording (e.g. `audit`). */\n reason?: string;\n /** Compliance Officer's explanation for the deletion. Max 255 characters. */\n comment?: string;\n};\n\n/**\n * Discriminator for {@link GetCallRecordingRequest}. Selects which read operation\n * {@link ICallRecording.getCallRecording} performs based on the request body.\n *\n * - `LIST`: list the current user's recordings.\n * - `DETAIL`: fetch a single recording (with download/playback links).\n * - `METADATA`: fetch a single recording's metadata document.\n * - `BY_CALL_SESSION`: list recordings tied to a call session id (client-side filter).\n */\nexport enum RecordingRequestType {\n LIST = 'list',\n DETAIL = 'detail',\n METADATA = 'metadata',\n BY_CALL_SESSION = 'byCallSession',\n}\n\n/**\n * Lists the current user's converged recordings.\n * Maps to `GET /convergedRecordings` with the query params from {@link GetRecordingsOptions}.\n */\nexport type ListRecordingsRequest = {\n type: RecordingRequestType.LIST;\n options?: GetRecordingsOptions;\n};\n\n/**\n * Fetches a single converged recording by id.\n * Maps to `GET /convergedRecordings/{recordingId}`.\n */\nexport type DetailRecordingRequest = {\n type: RecordingRequestType.DETAIL;\n recordingId: string;\n};\n\n/**\n * Fetches the metadata document for a single recording.\n * Maps to `GET /convergedRecordings/{recordingId}/metadata`.\n */\nexport type MetadataRecordingRequest = {\n type: RecordingRequestType.METADATA;\n recordingId: string;\n};\n\n/**\n * Returns the recordings tied to a call session id (`serviceData.callSessionId`).\n * Fetches a list and filters client-side; `options` widen the scanned set.\n */\nexport type CallSessionRecordingsRequest = {\n type: RecordingRequestType.BY_CALL_SESSION;\n callSessionId: string;\n options?: GetRecordingsOptions;\n};\n\n/**\n * Discriminated union of every read request accepted by {@link ICallRecording.getCallRecording}.\n * The `type` field selects the operation and constrains the rest of the body, while\n * {@link RecordingResponseFor} maps each member to its concrete response type so the caller keeps\n * full type inference from a single method.\n */\nexport type GetCallRecordingRequest =\n | ListRecordingsRequest\n | DetailRecordingRequest\n | MetadataRecordingRequest\n | CallSessionRecordingsRequest;\n\n/**\n * Maps a {@link GetCallRecordingRequest} member to the response type\n * {@link ICallRecording.getCallRecording} resolves with for that request, preserving per-request\n * return-type inference behind the single method.\n */\nexport type RecordingResponseFor<T extends GetCallRecordingRequest> =\n T extends DetailRecordingRequest\n ? RecordingResponse\n : T extends MetadataRecordingRequest\n ? RecordingMetadataResponse\n : RecordingListResponse;\n\n/**\n * Interface for the CallRecording client.\n *\n * Provides read access to Post Call Recordings through a single {@link getCallRecording} method\n * (listing, single fetch, lookup by call session, and metadata — selected by the request `type`),\n * moves a recording to the recycle bin (soft delete), and emits recording lifecycle events received\n * over Mercury.\n */\nexport interface ICallRecording extends Eventing<CallRecordingEventTypes> {\n /**\n * Reads Post Call Recordings. The {@link GetCallRecordingRequest} `type` selects the operation\n * and constrains the rest of the request body; the resolved response type is inferred per\n * request via {@link RecordingResponseFor}:\n *\n * - `LIST` (`GET /convergedRecordings`) -> {@link RecordingListResponse}. The query params come\n * from {@link GetRecordingsOptions}; both a `from` lower bound (derived from `days` when not\n * provided) and a `to` upper bound (defaults to `now`) are always sent, because the API only\n * returns results when the time window is bounded on both ends.\n * - `DETAIL` (`GET /convergedRecordings/{recordingId}`) -> {@link RecordingResponse}.\n * - `METADATA` (`GET /convergedRecordings/{recordingId}/metadata`) ->\n * {@link RecordingMetadataResponse}.\n * - `BY_CALL_SESSION` -> {@link RecordingListResponse}. The recording API has no confirmed\n * server-side filter for call session id, so this fetches a list and filters client-side on\n * `serviceData.callSessionId`. The scan is bounded by the list query, so pass `options` to\n * widen the time window/status/page when the target session may fall outside the defaults.\n *\n * @param request - The discriminated read request.\n *\n * @example\n * ```javascript\n * const list = await callRecording.getCallRecording({type: RecordingRequestType.LIST, options: {max: 30}});\n * const one = await callRecording.getCallRecording({type: RecordingRequestType.DETAIL, recordingId});\n * const meta = await callRecording.getCallRecording({type: RecordingRequestType.METADATA, recordingId});\n * const bySession = await callRecording.getCallRecording({\n * type: RecordingRequestType.BY_CALL_SESSION,\n * callSessionId,\n * options: {days: 30, max: 100},\n * });\n * ```\n */\n getCallRecording<T extends GetCallRecordingRequest>(request: T): Promise<RecordingResponseFor<T>>;\n\n /**\n * Moves a recording to the recycle bin (soft delete).\n *\n * Calls `POST /convergedRecordings/softDelete` with `{ recordingIds: [recordingId] }`.\n * The recording can be restored from the recycle bin via the platform restore API. Requires\n * `spark:recordings_write` on the access token (recording owner). Control Hub\n * \"Delete recordings and transcripts\" enables this for the user; it does **not** grant\n * compliance-officer permanent delete.\n *\n * Mercury emits `convergedRecordings.updated` + `TRASH`, surfaced as `callRecording:deleted`.\n *\n * @param recordingId - The recording id (`id`) to move to the recycle bin.\n * @param _options - Deprecated. Ignored.\n *\n * @example\n * ```javascript\n * await callRecording.deleteRecording(recordingId);\n * ```\n */\n deleteRecording(\n recordingId: string,\n _options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse>;\n}\n"],"mappings":";;;;;;;AAQA;AACA;AACA;AACA;AACA;AACA;AALA,IAMYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAK3B;AACA;AACA;AAFA,IAGYE,kBAAkB,GAAAD,OAAA,CAAAC,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAO9B;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAmBA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AA+CA;AACA;AACA;AACA;AACA;AA6EA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,IASYC,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAOhC;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -6,7 +6,7 @@ import { METHOD_START_MESSAGE, SUCCESS_MESSAGE, SUCCESS_STATUS_CODE } from '../c
6
6
  import { COMMON_EVENT_KEYS, MOBIUS_EVENT_KEYS, RECORDING_EVENT_SUBTYPE, } from '../Events/types';
7
7
  import { Eventing } from '../Events/impl';
8
8
  import { RecordingRequestType, } from './types';
9
- import { CALL_RECORDING_FILE, CONVERGED_RECORDINGS, DEFAULT_MAX, DEFAULT_NUMBER_OF_DAYS, DEFAULT_STATUS, FORMAT, FROM, LOCATION_ID, MAX, METADATA, METHODS, OWNER_TYPE, RECORDING_NOT_FOUND_MESSAGE, SERVICE_TYPE, STATUS, STORAGE_REGION, TO, TOPIC, WEBEX_USER_REQUEST_HEADER, } from './constants';
9
+ import { CALL_RECORDING_FILE, CONVERGED_RECORDINGS, DEFAULT_MAX, DEFAULT_NUMBER_OF_DAYS, DEFAULT_STATUS, FORMAT, FROM, LOCATION_ID, MAX, METADATA, METHODS, OWNER_TYPE, RECORDING_NOT_FOUND_MESSAGE, SERVICE_TYPE, SOFT_DELETE, STATUS, STORAGE_REGION, TO, TOPIC, WEBEX_USER_REQUEST_HEADER, } from './constants';
10
10
  export class WxcCallRecordingConnector extends Eventing {
11
11
  sdkConnector;
12
12
  webex;
@@ -191,26 +191,19 @@ export class WxcCallRecordingConnector extends Eventing {
191
191
  return serviceErrorCodeHandler(errorInfo, loggerContext);
192
192
  }
193
193
  }
194
- async deleteRecording(recordingId, options) {
194
+ async deleteRecording(recordingId, _options) {
195
195
  const loggerContext = {
196
196
  file: CALL_RECORDING_FILE,
197
197
  method: METHODS.DELETE_RECORDING,
198
198
  };
199
199
  log.info(`${METHOD_START_MESSAGE} with recordingId=${recordingId}`, loggerContext);
200
200
  try {
201
- const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${recordingId}`;
202
- const body = {};
203
- if (options?.reason) {
204
- body.reason = options.reason;
205
- }
206
- if (options?.comment) {
207
- body.comment = options.comment;
208
- }
201
+ const url = `${this.recordingServiceUrl}/${CONVERGED_RECORDINGS}/${SOFT_DELETE}`;
209
202
  const response = await this.webex.request({
210
203
  uri: url,
211
- method: HTTP_METHODS.DELETE,
204
+ method: HTTP_METHODS.POST,
212
205
  service: ALLOWED_SERVICES.HYDRA_DEVELOPER_API,
213
- ...(Object.keys(body).length > 0 ? { body } : {}),
206
+ body: { recordingIds: [recordingId] },
214
207
  });
215
208
  log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);
216
209
  const responseDetails = {
@@ -218,7 +211,7 @@ export class WxcCallRecordingConnector extends Eventing {
218
211
  data: {},
219
212
  message: SUCCESS_MESSAGE,
220
213
  };
221
- log.log(`Successfully deleted recording ${recordingId}`, loggerContext);
214
+ log.log(`Successfully moved recording ${recordingId} to recycle bin`, loggerContext);
222
215
  return responseDetails;
223
216
  }
224
217
  catch (err) {
@@ -1,5 +1,6 @@
1
1
  export const CALL_RECORDING_FILE = 'CallRecording';
2
2
  export const CONVERGED_RECORDINGS = 'convergedRecordings';
3
+ export const SOFT_DELETE = 'softDelete';
3
4
  export const METADATA = 'metadata';
4
5
  export const FROM = 'from';
5
6
  export const TO = 'to';
@@ -1 +1 @@
1
- {"version":3,"file":"CallRecording.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/CallRecording.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAK9D,OAAO,EAAC,uBAAuB,EAAoC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAmBjB,qBAAa,aAAc,SAAQ,QAAQ,CAAC,uBAAuB,CAAE,YAAW,cAAc;IAYxD,MAAM,EAAE,eAAe;IAX3D,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,cAAc,CAAkB;IAExC,OAAO,CAAC,gBAAgB,CAAkB;gBAK9B,KAAK,EAAE,QAAQ,EAAS,MAAM,EAAE,eAAe;IAiB3D,OAAO,CAAC,0BAA0B;IAsBlC,OAAO,CAAC,sBAAsB;IAiBvB,gBAAgB,CAAC,CAAC,SAAS,uBAAuB,EACvD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAStB,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,uBAAuB,CAAC;CAGpC;AAQD,eAAO,MAAM,yBAAyB,UAC7B,QAAQ,UACP,eAAe,KACtB,cAAkD,CAAC"}
1
+ {"version":3,"file":"CallRecording.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/CallRecording.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAK9D,OAAO,EAAC,uBAAuB,EAAoC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAmBjB,qBAAa,aAAc,SAAQ,QAAQ,CAAC,uBAAuB,CAAE,YAAW,cAAc;IAYxD,MAAM,EAAE,eAAe;IAX3D,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,cAAc,CAAkB;IAExC,OAAO,CAAC,gBAAgB,CAAkB;gBAK9B,KAAK,EAAE,QAAQ,EAAS,MAAM,EAAE,eAAe;IAiB3D,OAAO,CAAC,0BAA0B;IAsBlC,OAAO,CAAC,sBAAsB;IAiBvB,gBAAgB,CAAC,CAAC,SAAS,uBAAuB,EACvD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAWtB,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,uBAAuB,CAAC;CAGpC;AAQD,eAAO,MAAM,yBAAyB,UAC7B,QAAQ,UACP,eAAe,KACtB,cAAkD,CAAC"}
@@ -14,7 +14,7 @@ export declare class WxcCallRecordingConnector extends Eventing<CallRecordingEve
14
14
  private getRecording;
15
15
  private getRecordingsByCallSessionId;
16
16
  private getRecordingMetadata;
17
- deleteRecording(recordingId: string, options?: DeleteRecordingOptions): Promise<RecordingDeleteResponse>;
17
+ deleteRecording(recordingId: string, _options?: DeleteRecordingOptions): Promise<RecordingDeleteResponse>;
18
18
  handleRecordingCreatedEvent: (event?: RecordingEvent) => Promise<void>;
19
19
  handleRecordingUpdatedEvent: (event?: RecordingEvent) => Promise<void>;
20
20
  handleRecordingDeletedEvent: (event?: RecordingEvent) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"WxcCallRecordingConnector.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/WxcCallRecordingConnector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAK9D,OAAO,EACL,uBAAuB,EAIvB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EAEvB,cAAc,EACd,eAAe,EAEf,uBAAuB,EAOvB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAgCjB,qBAAa,yBACX,SAAQ,QAAQ,CAAC,uBAAuB,CACxC,YAAW,cAAc;IAEzB,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,mBAAmB,CAAS;gBAMxB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAmCpD,OAAO,CAAC,kBAAkB;IAyCnB,gBAAgB,CAAC,CAAC,SAAS,uBAAuB,EACvD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAYnC,OAAO,CAAC,wBAAwB;YA4BlB,aAAa;YAqDb,YAAY;YAqDZ,4BAA4B;YA2C5B,oBAAoB;IAgDrB,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,uBAAuB,CAAC;IAiDnC,2BAA2B,WAAkB,cAAc,mBAMzD;IAaF,2BAA2B,WAAkB,cAAc,mBAkBzD;IAEF,2BAA2B,WAAkB,cAAc,mBAMzD;IAKF,OAAO,CAAC,0BAA0B;CAcnC"}
1
+ {"version":3,"file":"WxcCallRecordingConnector.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/WxcCallRecordingConnector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAK9D,OAAO,EACL,uBAAuB,EAIvB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EAEvB,cAAc,EACd,eAAe,EAEf,uBAAuB,EAOvB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAiCjB,qBAAa,yBACX,SAAQ,QAAQ,CAAC,uBAAuB,CACxC,YAAW,cAAc;IAEzB,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,mBAAmB,CAAS;gBAMxB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAmCpD,OAAO,CAAC,kBAAkB;IAyCnB,gBAAgB,CAAC,CAAC,SAAS,uBAAuB,EACvD,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAYnC,OAAO,CAAC,wBAAwB;YA4BlB,aAAa;YAqDb,YAAY;YAqDZ,4BAA4B;YA2C5B,oBAAoB;IAsDrB,eAAe,CAC1B,WAAW,EAAE,MAAM,EAEnB,QAAQ,CAAC,EAAE,sBAAsB,GAChC,OAAO,CAAC,uBAAuB,CAAC;IAyCnC,2BAA2B,WAAkB,cAAc,mBAMzD;IAaF,2BAA2B,WAAkB,cAAc,mBAkBzD;IAEF,2BAA2B,WAAkB,cAAc,mBAMzD;IAKF,OAAO,CAAC,0BAA0B;CAcnC"}
@@ -1,5 +1,6 @@
1
1
  export declare const CALL_RECORDING_FILE = "CallRecording";
2
2
  export declare const CONVERGED_RECORDINGS = "convergedRecordings";
3
+ export declare const SOFT_DELETE = "softDelete";
3
4
  export declare const METADATA = "metadata";
4
5
  export declare const FROM = "from";
5
6
  export declare const TO = "to";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAGnD,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,QAAQ,aAAa,CAAC;AAGnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,EAAE,OAAO,CAAC;AACvB,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAC9C,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,KAAK,UAAU,CAAC;AAG7B,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,WAAW,KAAK,CAAC;AAK9B,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAGzC,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAE5D,eAAO,MAAM,2BAA2B,uDAAuD,CAAC;AAGhG,eAAO,MAAM,OAAO;;;;;;;;CAQnB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAGnD,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,QAAQ,aAAa,CAAC;AAGnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,EAAE,OAAO,CAAC;AACvB,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAC9C,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,KAAK,UAAU,CAAC;AAG7B,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,WAAW,KAAK,CAAC;AAK9B,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAGzC,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAE5D,eAAO,MAAM,2BAA2B,uDAAuD,CAAC;AAGhG,eAAO,MAAM,OAAO;;;;;;;;CAQnB,CAAC"}
@@ -171,6 +171,6 @@ export type GetCallRecordingRequest = ListRecordingsRequest | DetailRecordingReq
171
171
  export type RecordingResponseFor<T extends GetCallRecordingRequest> = T extends DetailRecordingRequest ? RecordingResponse : T extends MetadataRecordingRequest ? RecordingMetadataResponse : RecordingListResponse;
172
172
  export interface ICallRecording extends Eventing<CallRecordingEventTypes> {
173
173
  getCallRecording<T extends GetCallRecordingRequest>(request: T): Promise<RecordingResponseFor<T>>;
174
- deleteRecording(recordingId: string, options?: DeleteRecordingOptions): Promise<RecordingDeleteResponse>;
174
+ deleteRecording(recordingId: string, _options?: DeleteRecordingOptions): Promise<RecordingDeleteResponse>;
175
175
  }
176
176
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/CallRecording/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -45,9 +45,9 @@
45
45
  "@webex/common": "3.12.0-next.5",
46
46
  "@webex/common-timers": "3.12.0-next.5",
47
47
  "@webex/internal-media-core": "2.26.2",
48
- "@webex/internal-plugin-device": "3.12.0-next.29",
49
- "@webex/internal-plugin-feature": "3.12.0-next.29",
50
- "@webex/internal-plugin-metrics": "3.12.0-next.29",
48
+ "@webex/internal-plugin-device": "3.12.0-next.30",
49
+ "@webex/internal-plugin-feature": "3.12.0-next.30",
50
+ "@webex/internal-plugin-metrics": "3.12.0-next.30",
51
51
  "@webex/media-helpers": "3.12.0-next.10",
52
52
  "async-mutex": "0.4.0",
53
53
  "backoff": "2.5.0",
@@ -147,5 +147,5 @@
147
147
  "staticpath": "docs",
148
148
  "noprompt": true
149
149
  },
150
- "version": "3.12.0-next.70"
150
+ "version": "3.12.0-next.72"
151
151
  }