diff --git a/lib/resources/call.js b/lib/resources/call.js index 000b4b7b..ffaea1d0 100644 --- a/lib/resources/call.js +++ b/lib/resources/call.js @@ -46,47 +46,7 @@ export class CreateCallResponse { } } -export class CreateMaskingSessionResponse { - constructor(params) { - params = params || {}; - this.apiId = params.apiId; - this.sessionUuid = params.sessionUuid; - this.virtualNumber = params.virtualNumber; - this.message = params.message; - this.session = params.session; - - } -} -export class GetMaskingSessionResponse { - constructor(params) { - params = params || {}; - this.apiId = params.apiId; - this.response = params.response; - } -} -export class DeleteMaskingSessionResponse { - constructor(params) { - params = params || {}; - this.apiId = params.apiId; - this.message = params.message; - } -} -export class UpdateMaskingSessionResponse { - constructor(params) { - params = params || {}; - this.apiId = params.apiId; - this.message = params.message; - this.session = params.session; - } -} -export class ListMaskingSessionResponse { - constructor(params) { - params = params || {}; - this.apiId = params.apiId; - this.response = params.response; - } -} export class GetQueuedCallResponse { constructor(params) { params = params || {}; @@ -709,176 +669,6 @@ export class CallInterface extends PlivoResourceInterface { }); }); } - - /** - * Create a masking session - * @method - * @param {string} firstParty - The phone number or SIP endpoint of the first party. - * @param {string} secondParty - The phone number or SIP endpoint of the second party. - * @param {object} params - optional params to make a call - * @param {number} [params.sessionExpiry]- The duration in seconds for which the masking session will be active. - * @param {number} [params.callTimeLimit] - The maximum duration in seconds for each call in the masking session. - * @param {boolean} [params.record] - Indicates whether the calls in the masking session should be recorded. - * @param {string} [params.recordFileFormat] - The file format for the recorded calls. - * @param {string} [params.recordingCallbackUrl] - The URL to which the recording callback will be sent. - * @param {boolean} [params.initiateCallToFirstParty] - Indicates whether the call to the first party should be initiated automatically. - * @param {string} [params.callbackUrl] - The URL to which the callback for the masking session will be sent. - * @param {string} [params.callbackMethod] - The HTTP method for the callback request. - * @param {number} [params.ringTimeout] - The duration in seconds for which the call will ring before being canceled. - * @param {string} [params.firstPartyPlayUrl] - The URL to play audio to the first party when the call is established. - * @param {string} [params.secondPartyPlayUrl] - The URL to play audio to the second party when the call is established. - * @param {string} [params.recordingCallbackMethod] - The HTTP method for the recording callback request. - * @promise {object} returns PlivoGenericResponse Object - * @fail {Error} returns Error - */ - createMaskingSession(firstParty, secondParty, params = {}) { - let errors = validate([{ - field: 'first_party', - value: firstParty, - validators: ['isRequired'] - }, - { - field: 'second_party', - value: secondParty, - validators: ['isRequired'] - } - ]); - params.firstParty = firstParty; - params.secondParty = secondParty - params.isVoiceRequest = 'true'; - - let client = this[clientKey]; - return new Promise((resolve, reject) => { - client('POST', 'Masking/Session/', params) - .then(response => { - resolve(new CreateMaskingSessionResponse(response.body, idField)); - }) - .catch(error => { - reject(error); - }); - }); - } - - /** - * Update a masking session - * @method - * @param {string} sessionUuid - unique idenfier of a session - * @param {object} params - optional params to update a session - * @param {number} [params.sessionExpiry] - The duration in seconds for which the masking session will be active. - * @param {number} [params.callTimeLimit] - The maximum duration in seconds for each call in the masking session. - * @param {boolean} [params.record] - Indicates whether the calls in the masking session should be recorded. - * @param {string} [params.recordFileFormat] - The file format for the recorded calls. - * @param {string} [params.recordingCallbackUrl] - The URL to which the recording callback will be sent. - * @param {string} [params.callbackUrl] - The URL to which the callback for the masking session will be sent. - * @param {string} [params.callbackMethod] - The HTTP method for the callback request. - * @param {number} [params.ringTimeout] - The duration in seconds for which the call will ring before being canceled. - * @param {string} [params.firstPartyPlayUrl] - The URL to play audio to the first party when the call is established. - * @param {string} [params.secondPartyPlayUrl] - The URL to play audio to the second party when the call is established. - * @param {string} [params.recordingCallbackMethod] - The HTTP method for the recording callback request. - * @returns {Promise} - Resolves to a PlivoGenericResponse object - * @throws {Error} - Throws an error if the update masking session request fails - */ - updateMaskingSession(sessionUuid, params = {}) { - let errors = validate([{ - field: 'session_uuid', - value: sessionUuid, - validators: ['isRequired'] - } - ]); - params.sessionUuid = sessionUuid; - params.isVoiceRequest = 'true'; - - if (errors) { - return errors; - } - return new Call(this[clientKey], { - id: sessionUuid, - }).updateMaskingSession(params); - } - /** - * List masking sessions with optional filters - * @method - * @param {object} filterParams - Optional filter parameters to list masking sessions - * @param {string} [filterParams.firstParty] - The phone number or SIP endpoint of the first party. - * @param {string} [filterParams.secondParty] - The phone number or SIP endpoint of the second party. - * @param {string} [filterParams.virtualNumber] - The virtual number associated with the masking session. - * @param {string} [filterParams.status] - The status of the masking session. - * @param {string} [filterParams.createdTimeEquals] - The specific created time to filter sessions. - * @param {string} [filterParams.createdTimeLessThan] - Filter sessions created before this time. - * @param {string} [filterParams.createdTimeGreaterThan] - Filter sessions created after this time. - * @param {string} [filterParams.createdTimeLessOrEqual] - Filter sessions created before or at this time. - * @param {string} [filterParams.createdTimeGreaterOrEqual] - Filter sessions created after or at this time. - * @param {string} [filterParams.expiryTimeEquals] - The specific expiry time to filter sessions. - * @param {string} [filterParams.expiryTimeLessThan] - Filter sessions expiring before this time. - * @param {string} [filterParams.expiryTimeGreaterThan] - Filter sessions expiring after this time. - * @param {string} [filterParams.expiryTimeLessOrEqual] - Filter sessions expiring before or at this time. - * @param {string} [filterParams.expiryTimeGreaterOrEqual] - Filter sessions expiring after or at this time. - * @param {number} [filterParams.durationEquals] - The duration in seconds to filter sessions. - * @param {number} [filterParams.durationLessThan] - Filter sessions with duration less than this value. - * @param {number} [filterParams.durationGreaterThan] - Filter sessions with duration greater than this value. - * @param {number} [filterParams.durationLessOrEqual] - Filter sessions with duration less than or equal to this value. - * @param {number} [filterParams.durationGreaterOrEqual] - Filter sessions with duration greater than or equal to this value. - * @param {number} [filterParams.limit] - The maximum number of sessions to retrieve. - * @param {number} [filterParams.offset] - The offset for paginated results. - * @returns {Promise} - Resolves to a PlivoGenericResponse object - * @throws {Error} - Throws an error if the list masking sessions request fails - */ - listMaskingSession(params) { - let client = this[clientKey]; - if (params === undefined) { - params = {} - } - params.isVoiceRequest = 'true'; - return new Promise(function (resolve, reject) { - client('GET', 'Masking/Session/', params).then(function (response) { - resolve(new ListMaskingSessionResponse(response.body, idField)); - }).catch(function (error) { - reject(error); - }); - }); - } - /** - * Get a masking session - * @method - * @param {string} sessionUuid - unique idenfier of a session - * @promise {object} returns PlivoGenericResponse Object - * @fail {Error} returns Error - */ - getMaskingSession(sessionUuid){ - let errors = validate([{ - field: 'sessionUuid', - value: sessionUuid, - validators: ['isRequired'] - } - ]); - if (errors) { - return errors; - } - return new Call(this[clientKey], { - id: sessionUuid, - }).getMaskingSession(); - } - /** - * Delete a masking session - * @method - * @param {string} sessionUuid - unique idenfier of a session - * @promise {object} returns PlivoGenericResponse Object - * @fail {Error} returns Error - */ - deleteMaskingSession(sessionUuid){ - let errors = validate([{ - field: 'sessionUuid', - value: sessionUuid, - validators: ['isRequired'] - } - ]); - if (errors) { - return errors; - } - return new Call(this[clientKey], { - id: sessionUuid, - }).deleteMaskingSession(); - } /** * Hangup A Specific Call * @method diff --git a/lib/resources/maskingSession.js b/lib/resources/maskingSession.js new file mode 100644 index 00000000..a471a557 --- /dev/null +++ b/lib/resources/maskingSession.js @@ -0,0 +1,259 @@ +import * as _ from "lodash"; + +import { + PlivoResource, + PlivoResourceInterface +} from '../base'; +import { + extend, + validate +} from '../utils/common.js'; + +const clientKey = Symbol(); +const action = 'Masking/Session/'; +const idField = 'sessionUuid'; + +export class CreateMaskingSessionResponse { + constructor(params) { + params = params || {}; + this.apiId = params.apiId; + this.sessionUuid = params.sessionUuid; + this.virtualNumber = params.virtualNumber; + this.message = params.message; + this.session = params.session; + + + } +} +export class GetMaskingSessionResponse { + constructor(params) { + params = params || {}; + this.apiId = params.apiId; + this.response = params.response; + } +} +export class DeleteMaskingSessionResponse { + constructor(params) { + params = params || {}; + this.apiId = params.apiId; + this.message = params.message; + } +} +export class UpdateMaskingSessionResponse { + constructor(params) { + params = params || {}; + this.apiId = params.apiId; + this.message = params.message; + this.session = params.session; + } +} +export class ListMaskingSessionResponse { + constructor(params) { + params = params || {}; + this.apiId = params.apiId; + this.response = params.response; + } +} + +export class MaskingSession extends PlivoResource { + constructor(client, data = {}) { + super(action, MaskingSession, idField, client); + + if (idField in data) { + this.id = data[idField]; + } + + extend(this, data); + this[clientKey] = client; + } + getMaskingSession(params={}) { + params.isVoiceRequest = 'true'; + return super.executeAction(action + this.id, 'GET', params); + } + deleteMaskingSession(params={}) { + params.isVoiceRequest = 'true'; + return super.executeAction(action + this.id, 'DELETE', params); + } + updateMaskingSession(params) { + params.isVoiceRequest = 'true'; + return super.executeAction(action + this.id, 'POST', params); + } +} +export class MaskingSessionInterface extends PlivoResourceInterface { + + constructor(client, data = {}) { + super(action, MaskingSession, idField, client); + extend(this, data); + + this[clientKey] = client; + } + /** + * Create a masking session + * @method + * @param {string} firstParty - The phone number or SIP endpoint of the first party. + * @param {string} secondParty - The phone number or SIP endpoint of the second party. + * @param {object} params - optional params to make a call + * @param {number} [params.sessionExpiry]- The duration in seconds for which the masking session will be active. + * @param {number} [params.callTimeLimit] - The maximum duration in seconds for each call in the masking session. + * @param {boolean} [params.record] - Indicates whether the calls in the masking session should be recorded. + * @param {string} [params.recordFileFormat] - The file format for the recorded calls. + * @param {string} [params.recordingCallbackUrl] - The URL to which the recording callback will be sent. + * @param {boolean} [params.initiateCallToFirstParty] - Indicates whether the call to the first party should be initiated automatically. + * @param {string} [params.callbackUrl] - The URL to which the callback for the masking session will be sent. + * @param {string} [params.callbackMethod] - The HTTP method for the callback request. + * @param {number} [params.ringTimeout] - The duration in seconds for which the call will ring before being canceled. + * @param {string} [params.firstPartyPlayUrl] - The URL to play audio to the first party when the call is established. + * @param {string} [params.secondPartyPlayUrl] - The URL to play audio to the second party when the call is established. + * @param {string} [params.recordingCallbackMethod] - The HTTP method for the recording callback request. + * @promise {object} returns PlivoGenericResponse Object + * @fail {Error} returns Error + */ + createMaskingSession(firstParty, secondParty, params = {}) { + let errors = validate([{ + field: 'first_party', + value: firstParty, + validators: ['isRequired'] + }, + { + field: 'second_party', + value: secondParty, + validators: ['isRequired'] + } + ]); + params.firstParty = firstParty; + params.secondParty = secondParty + params.isVoiceRequest = 'true'; + + let client = this[clientKey]; + return new Promise((resolve, reject) => { + client('POST', 'Masking/Session/', params) + .then(response => { + resolve(new CreateMaskingSessionResponse(response.body, idField)); + }) + .catch(error => { + reject(error); + }); + }); + } + + /** + * Update a masking session + * @method + * @param {string} sessionUuid - unique idenfier of a session + * @param {object} params - optional params to update a session + * @param {number} [params.sessionExpiry] - The duration in seconds for which the masking session will be active. + * @param {number} [params.callTimeLimit] - The maximum duration in seconds for each call in the masking session. + * @param {boolean} [params.record] - Indicates whether the calls in the masking session should be recorded. + * @param {string} [params.recordFileFormat] - The file format for the recorded calls. + * @param {string} [params.recordingCallbackUrl] - The URL to which the recording callback will be sent. + * @param {string} [params.callbackUrl] - The URL to which the callback for the masking session will be sent. + * @param {string} [params.callbackMethod] - The HTTP method for the callback request. + * @param {number} [params.ringTimeout] - The duration in seconds for which the call will ring before being canceled. + * @param {string} [params.firstPartyPlayUrl] - The URL to play audio to the first party when the call is established. + * @param {string} [params.secondPartyPlayUrl] - The URL to play audio to the second party when the call is established. + * @param {string} [params.recordingCallbackMethod] - The HTTP method for the recording callback request. + * @returns {Promise} - Resolves to a PlivoGenericResponse object + * @throws {Error} - Throws an error if the update masking session request fails + */ + updateMaskingSession(sessionUuid, params = {}) { + let errors = validate([{ + field: 'session_uuid', + value: sessionUuid, + validators: ['isRequired'] + } + ]); + params.sessionUuid = sessionUuid; + params.isVoiceRequest = 'true'; + + if (errors) { + return errors; + } + return new MaskingSession(this[clientKey], { + id: sessionUuid, + }).updateMaskingSession(params); + } + /** + * List masking sessions with optional filters + * @method + * @param {object} filterParams - Optional filter parameters to list masking sessions + * @param {string} [filterParams.firstParty] - The phone number or SIP endpoint of the first party. + * @param {string} [filterParams.secondParty] - The phone number or SIP endpoint of the second party. + * @param {string} [filterParams.virtualNumber] - The virtual number associated with the masking session. + * @param {string} [filterParams.status] - The status of the masking session. + * @param {string} [filterParams.createdTimeEquals] - The specific created time to filter sessions. + * @param {string} [filterParams.createdTimeLessThan] - Filter sessions created before this time. + * @param {string} [filterParams.createdTimeGreaterThan] - Filter sessions created after this time. + * @param {string} [filterParams.createdTimeLessOrEqual] - Filter sessions created before or at this time. + * @param {string} [filterParams.createdTimeGreaterOrEqual] - Filter sessions created after or at this time. + * @param {string} [filterParams.expiryTimeEquals] - The specific expiry time to filter sessions. + * @param {string} [filterParams.expiryTimeLessThan] - Filter sessions expiring before this time. + * @param {string} [filterParams.expiryTimeGreaterThan] - Filter sessions expiring after this time. + * @param {string} [filterParams.expiryTimeLessOrEqual] - Filter sessions expiring before or at this time. + * @param {string} [filterParams.expiryTimeGreaterOrEqual] - Filter sessions expiring after or at this time. + * @param {number} [filterParams.durationEquals] - The duration in seconds to filter sessions. + * @param {number} [filterParams.durationLessThan] - Filter sessions with duration less than this value. + * @param {number} [filterParams.durationGreaterThan] - Filter sessions with duration greater than this value. + * @param {number} [filterParams.durationLessOrEqual] - Filter sessions with duration less than or equal to this value. + * @param {number} [filterParams.durationGreaterOrEqual] - Filter sessions with duration greater than or equal to this value. + * @param {number} [filterParams.limit] - The maximum number of sessions to retrieve. + * @param {number} [filterParams.offset] - The offset for paginated results. + * @returns {Promise} - Resolves to a PlivoGenericResponse object + * @throws {Error} - Throws an error if the list masking sessions request fails + */ + listMaskingSession(params) { + let client = this[clientKey]; + if (params === undefined) { + params = {} + } + params.isVoiceRequest = 'true'; + return new Promise(function (resolve, reject) { + client('GET', 'Masking/Session/', params).then(function (response) { + resolve(new ListMaskingSessionResponse(response.body, idField)); + }).catch(function (error) { + reject(error); + }); + }); + } + /** + * Get a masking session + * @method + * @param {string} sessionUuid - unique idenfier of a session + * @promise {object} returns PlivoGenericResponse Object + * @fail {Error} returns Error + */ + getMaskingSession(sessionUuid){ + let errors = validate([{ + field: 'sessionUuid', + value: sessionUuid, + validators: ['isRequired'] + } + ]); + if (errors) { + return errors; + } + return new MaskingSession(this[clientKey], { + id: sessionUuid, + }).getMaskingSession(); + } + /** + * Delete a masking session + * @method + * @param {string} sessionUuid - unique idenfier of a session + * @promise {object} returns PlivoGenericResponse Object + * @fail {Error} returns Error + */ + deleteMaskingSession(sessionUuid){ + let errors = validate([{ + field: 'sessionUuid', + value: sessionUuid, + validators: ['isRequired'] + } + ]); + if (errors) { + return errors; + } + return new MaskingSession(this[clientKey], { + id: sessionUuid, + }).deleteMaskingSession(); + } +} \ No newline at end of file diff --git a/lib/rest/client-test.js b/lib/rest/client-test.js index dcf282c4..2ddc6e32 100644 --- a/lib/rest/client-test.js +++ b/lib/rest/client-test.js @@ -69,6 +69,7 @@ import { ComplianceRequirementInterface } from "../resources/complianceRequireme import { ComplianceApplicationInterface } from "../resources/complianceApplications"; import { LOAInterface } from "../resources/loa"; import { HostedMessagingNumberInterface } from "../resources/hostedMessagingNumber"; +import { MaskingSessionInterface } from '../resources/maskingSession.js'; export class Client { constructor(authId, authToken, proxy) { @@ -123,6 +124,7 @@ export class Client { this.multiPartyCalls = new MultiPartyCallInterface(client); this.loa = new LOAInterface(client); this.hostedMessagingNumber = new HostedMessagingNumberInterface(client); + this.maskingSession = new MaskingSessionInterface(client); } } diff --git a/lib/rest/client.js b/lib/rest/client.js index 5e8c6ca3..5a99038a 100644 --- a/lib/rest/client.js +++ b/lib/rest/client.js @@ -32,6 +32,7 @@ import { ComplianceApplicationInterface } from "../resources/complianceApplicati import { MultiPartyCallInterface } from "../resources/multiPartyCall"; import { LOAInterface } from "../resources/loa"; import { HostedMessagingNumberInterface } from "../resources/hostedMessagingNumber"; +import { MaskingSessionInterface } from "../resources/maskingSession.js"; exports.Response = function() { @@ -111,6 +112,7 @@ export class Client { this.multiPartyCalls = new MultiPartyCallInterface(client); this.loa = new LOAInterface(client); this.hostedMessagingNumber = new HostedMessagingNumberInterface(client); + this.maskingSession = new MaskingSessionInterface(client) } toJSON() { diff --git a/test/maskingSession.js b/test/maskingSession.js new file mode 100644 index 00000000..5c445169 --- /dev/null +++ b/test/maskingSession.js @@ -0,0 +1,44 @@ +import assert from 'assert'; +import {Client} from '../lib/rest/client-test'; + +let client = new Client('sampleid', 'sammpletoken', 'sampleproxy'); + +describe('client', function () { + let authId, authToken + + describe('MaskingSession', function () { + it('should create masking session!', function () { + client.maskingSession.createMaskingSession("917708772011", "918220568648", + { + callTimeLimit: 14600, + }, + ).then(function (response) { + assert.equal(response.message, 'Session created') + }) + }); + it('should delete a masking session!', function () { + client.maskingSession.deleteMaskingSession("197aa6e0-1abe-4d1c-b887-2b2406764360") + .then(function (response) { + assert.equal(response.message, 'Session expired') + }) + }); + it('should get masking session by session uuid!', function () { + client.maskingSession.getMaskingSession("197aa6e0-1abe-4d1c-b887-2b2406764360") + .then(function (response) { + assert.equal(response.response.sessionUuid, "197aa6e0-1abe-4d1c-b887-2b2406764360") + }) + }); + it('should update masking session using session uuid!', function () { + client.maskingSession.updateMaskingSession("63690013-52bb-43fa-9b0b-bf81c9f4d766") + .then(function (response) { + assert.equal(response.message, 'Session updated') + }) + }); + it('should list masking session!', function () { + client.maskingSession.listMaskingSession() + .then(function (response) { + assert.equal(response.length, 2) + }) + }); + }); +}) \ No newline at end of file diff --git a/types/resources/call.d.ts b/types/resources/call.d.ts index 34d802ae..3d6c5683 100644 --- a/types/resources/call.d.ts +++ b/types/resources/call.d.ts @@ -20,35 +20,6 @@ export class CreateCallResponse { message: string; requestUuid: Array | string; } -export class CreateMaskingSessionResponse { - constructor(params: object); - apiId: string; - sessionUuid:string; - virtualNumber:string; - message: string; - session: object; -} -export class GetMaskingSessionResponse { - constructor(params: object); - apiId: string; - response: object; -} -export class DeleteMaskingSessionResponse { - constructor(params: object); - apiId: string; - message: string; -} -export class UpdateMaskingSessionResponse { - constructor(params: object); - apiId: string; - message: string; - session: object; -} -export class ListMaskingSessionResponse { - constructor(params: object); - apiId: string; - response: object; -} export class GetQueuedCallResponse { constructor(params: object); apiId: string; @@ -346,96 +317,6 @@ export class CallInterface extends PlivoResourceInterface { * @fail {Error} returns Error */ create(from: string, to: string, answerUrl: string, params ? : {}): Promise < CreateCallResponse > ; - - /** - * Create a masking session - * @method - * @param {string} firstParty - The phone number or SIP endpoint of the first party. - * @param {string} secondParty - The phone number or SIP endpoint of the second party. - * @param {object} params - optional params to make a call - * @param {number} [params.sessionExpiry]- The duration in seconds for which the masking session will be active. - * @param {number} [params.callTimeLimit] - The maximum duration in seconds for each call in the masking session. - * @param {boolean} [params.record] - Indicates whether the calls in the masking session should be recorded. - * @param {string} [params.recordFileFormat] - The file format for the recorded calls. - * @param {string} [params.recordingCallbackUrl] - The URL to which the recording callback will be sent. - * @param {boolean} [params.initiateCallToFirstParty] - Indicates whether the call to the first party should be initiated automatically. - * @param {string} [params.callbackUrl] - The URL to which the callback for the masking session will be sent. - * @param {string} [params.callbackMethod] - The HTTP method for the callback request. - * @param {number} [params.ringTimeout] - The duration in seconds for which the call will ring before being canceled. - * @param {string} [params.firstPartyPlayUrl] - The URL to play audio to the first party when the call is established. - * @param {string} [params.secondPartyPlayUrl] - The URL to play audio to the second party when the call is established. - * @param {string} [params.recordingCallbackMethod] - The HTTP method for the recording callback request. - * @promise {object} returns PlivoGenericResponse Object - * @fail {Error} returns Error - */ - createMaskingSession(firstParty: string, secondParty: string, params ? : {}): Promise < CreateMaskingSessionResponse > ; - /** - * Update a masking session - * @method - * @param {string} sessionUuid - unique idenfier of a session - * @param {object} params - optional params to update a session - * @param {number} [params.sessionExpiry] - The duration in seconds for which the masking session will be active. - * @param {number} [params.callTimeLimit] - The maximum duration in seconds for each call in the masking session. - * @param {boolean} [params.record] - Indicates whether the calls in the masking session should be recorded. - * @param {string} [params.recordFileFormat] - The file format for the recorded calls. - * @param {string} [params.recordingCallbackUrl] - The URL to which the recording callback will be sent. - * @param {string} [params.callbackUrl] - The URL to which the callback for the masking session will be sent. - * @param {string} [params.callbackMethod] - The HTTP method for the callback request. - * @param {number} [params.ringTimeout] - The duration in seconds for which the call will ring before being canceled. - * @param {string} [params.firstPartyPlayUrl] - The URL to play audio to the first party when the call is established. - * @param {string} [params.secondPartyPlayUrl] - The URL to play audio to the second party when the call is established. - * @param {string} [params.recordingCallbackMethod] - The HTTP method for the recording callback request. - * @returns {Promise} - Resolves to a PlivoGenericResponse object - * @throws {Error} - Throws an error if the update masking session request fails - */ - updateMaskingSession(sessionUuid: string, params ? : {}): Promise < UpdateMaskingSessionResponse > ; - /** - * List masking sessions with optional filters - * @method - * @param {object} filterParams - Optional filter parameters to list masking sessions - * @param {string} [filterParams.firstParty] - The phone number or SIP endpoint of the first party. - * @param {string} [filterParams.secondParty] - The phone number or SIP endpoint of the second party. - * @param {string} [filterParams.virtualNumber] - The virtual number associated with the masking session. - * @param {string} [filterParams.status] - The status of the masking session. - * @param {string} [filterParams.createdTimeEquals] - The specific created time to filter sessions. - * @param {string} [filterParams.createdTimeLessThan] - Filter sessions created before this time. - * @param {string} [filterParams.createdTimeGreaterThan] - Filter sessions created after this time. - * @param {string} [filterParams.createdTimeLessOrEqual] - Filter sessions created before or at this time. - * @param {string} [filterParams.createdTimeGreaterOrEqual] - Filter sessions created after or at this time. - * @param {string} [filterParams.expiryTimeEquals] - The specific expiry time to filter sessions. - * @param {string} [filterParams.expiryTimeLessThan] - Filter sessions expiring before this time. - * @param {string} [filterParams.expiryTimeGreaterThan] - Filter sessions expiring after this time. - * @param {string} [filterParams.expiryTimeLessOrEqual] - Filter sessions expiring before or at this time. - * @param {string} [filterParams.expiryTimeGreaterOrEqual] - Filter sessions expiring after or at this time. - * @param {number} [filterParams.durationEquals] - The duration in seconds to filter sessions. - * @param {number} [filterParams.durationLessThan] - Filter sessions with duration less than this value. - * @param {number} [filterParams.durationGreaterThan] - Filter sessions with duration greater than this value. - * @param {number} [filterParams.durationLessOrEqual] - Filter sessions with duration less than or equal to this value. - * @param {number} [filterParams.durationGreaterOrEqual] - Filter sessions with duration greater than or equal to this value. - * @param {number} [filterParams.limit] - The maximum number of sessions to retrieve. - * @param {number} [filterParams.offset] - The offset for paginated results. - * @returns {Promise} - Resolves to a PlivoGenericResponse object - * @throws {Error} - Throws an error if the list masking sessions request fails - */ - listMaskingSession(params ? : {}): Promise < ListMaskingSessionResponse > ; - - /** - * Get a masking session - * @method - * @param {string} sessionUuid - unique idenfier of a session - * @promise {object} returns PlivoGenericResponse Object - * @fail {Error} returns Error - */ - getMaskingSession(sessionUuid: string): Promise < GetMaskingSessionResponse > ; - /** - * Delete a masking session - * @method - * @param {string} sessionUuid - unique idenfier of a session - * @promise {object} returns PlivoGenericResponse Object - * @fail {Error} returns Error - */ - deleteMaskingSession(sessionUuid: string): Promise < DeleteMaskingSessionResponse > ; - /** * Hangup A Specific Call * @method diff --git a/types/resources/maskingSession.d.ts b/types/resources/maskingSession.d.ts new file mode 100644 index 00000000..c5b277a5 --- /dev/null +++ b/types/resources/maskingSession.d.ts @@ -0,0 +1,162 @@ +export class CreateMaskingSessionResponse { + constructor(params: object); + apiId: string; + sessionUuid:string; + virtualNumber:string; + message: string; + session: object; +} +export class GetMaskingSessionResponse { + constructor(params: object); + apiId: string; + response: object; +} +export class DeleteMaskingSessionResponse { + constructor(params: object); + apiId: string; + message: string; +} +export class UpdateMaskingSessionResponse { + constructor(params: object); + apiId: string; + message: string; + session: object; +} +export class ListMaskingSessionResponse { + constructor(params: object); + apiId: string; + response: object; +} +export class MaskingSession extends PlivoResource { + constructor(client: Function, data ? : {}); + id: string; + /** + * Update a masking session + * @method + * @param {string} sessionUuid - unique idenfier of a session + * @param {object} params - optional params to update a session + * @param {number} [params.sessionExpiry] - The duration in seconds for which the masking session will be active. + * @param {number} [params.callTimeLimit] - The maximum duration in seconds for each call in the masking session. + * @param {boolean} [params.record] - Indicates whether the calls in the masking session should be recorded. + * @param {string} [params.recordFileFormat] - The file format for the recorded calls. + * @param {string} [params.recordingCallbackUrl] - The URL to which the recording callback will be sent. + * @param {string} [params.callbackUrl] - The URL to which the callback for the masking session will be sent. + * @param {string} [params.callbackMethod] - The HTTP method for the callback request. + * @param {number} [params.ringTimeout] - The duration in seconds for which the call will ring before being canceled. + * @param {string} [params.firstPartyPlayUrl] - The URL to play audio to the first party when the call is established. + * @param {string} [params.secondPartyPlayUrl] - The URL to play audio to the second party when the call is established. + * @param {string} [params.recordingCallbackMethod] - The HTTP method for the recording callback request. + * @returns {Promise} - Resolves to a PlivoGenericResponse object + * @throws {Error} - Throws an error if the update masking session request fails + */ + updateMaskingSession(params ? : {}): Promise < UpdateMaskingSessionResponse > ; + /** + * Get a masking session + * @method + * @param {string} sessionUuid - unique idenfier of a session + * @promise {object} returns PlivoGenericResponse Object + * @fail {Error} returns Error + */ + getMaskingSession(): Promise < GetMaskingSessionResponse > ; + /** + * Delete a masking session + * @method + * @param {string} sessionUuid - unique idenfier of a session + * @promise {object} returns PlivoGenericResponse Object + * @fail {Error} returns Error + */ + deleteMaskingSession(): Promise < DeleteMaskingSessionResponse > ; + +} + +export class MaskingSessionInterface extends PlivoResourceInterface { + constructor(client: Function, data ? : {}); + /** + * Create a masking session + * @method + * @param {string} firstParty - The phone number or SIP endpoint of the first party. + * @param {string} secondParty - The phone number or SIP endpoint of the second party. + * @param {object} params - optional params to make a call + * @param {number} [params.sessionExpiry]- The duration in seconds for which the masking session will be active. + * @param {number} [params.callTimeLimit] - The maximum duration in seconds for each call in the masking session. + * @param {boolean} [params.record] - Indicates whether the calls in the masking session should be recorded. + * @param {string} [params.recordFileFormat] - The file format for the recorded calls. + * @param {string} [params.recordingCallbackUrl] - The URL to which the recording callback will be sent. + * @param {boolean} [params.initiateCallToFirstParty] - Indicates whether the call to the first party should be initiated automatically. + * @param {string} [params.callbackUrl] - The URL to which the callback for the masking session will be sent. + * @param {string} [params.callbackMethod] - The HTTP method for the callback request. + * @param {number} [params.ringTimeout] - The duration in seconds for which the call will ring before being canceled. + * @param {string} [params.firstPartyPlayUrl] - The URL to play audio to the first party when the call is established. + * @param {string} [params.secondPartyPlayUrl] - The URL to play audio to the second party when the call is established. + * @param {string} [params.recordingCallbackMethod] - The HTTP method for the recording callback request. + * @promise {object} returns PlivoGenericResponse Object + * @fail {Error} returns Error + */ + createMaskingSession(firstParty: string, secondParty: string, params ? : {}): Promise < CreateMaskingSessionResponse > ; + /** + * Update a masking session + * @method + * @param {string} sessionUuid - unique idenfier of a session + * @param {object} params - optional params to update a session + * @param {number} [params.sessionExpiry] - The duration in seconds for which the masking session will be active. + * @param {number} [params.callTimeLimit] - The maximum duration in seconds for each call in the masking session. + * @param {boolean} [params.record] - Indicates whether the calls in the masking session should be recorded. + * @param {string} [params.recordFileFormat] - The file format for the recorded calls. + * @param {string} [params.recordingCallbackUrl] - The URL to which the recording callback will be sent. + * @param {string} [params.callbackUrl] - The URL to which the callback for the masking session will be sent. + * @param {string} [params.callbackMethod] - The HTTP method for the callback request. + * @param {number} [params.ringTimeout] - The duration in seconds for which the call will ring before being canceled. + * @param {string} [params.firstPartyPlayUrl] - The URL to play audio to the first party when the call is established. + * @param {string} [params.secondPartyPlayUrl] - The URL to play audio to the second party when the call is established. + * @param {string} [params.recordingCallbackMethod] - The HTTP method for the recording callback request. + * @returns {Promise} - Resolves to a PlivoGenericResponse object + * @throws {Error} - Throws an error if the update masking session request fails + */ + updateMaskingSession(sessionUuid: string, params ? : {}): Promise < UpdateMaskingSessionResponse > ; + /** + * List masking sessions with optional filters + * @method + * @param {object} filterParams - Optional filter parameters to list masking sessions + * @param {string} [filterParams.firstParty] - The phone number or SIP endpoint of the first party. + * @param {string} [filterParams.secondParty] - The phone number or SIP endpoint of the second party. + * @param {string} [filterParams.virtualNumber] - The virtual number associated with the masking session. + * @param {string} [filterParams.status] - The status of the masking session. + * @param {string} [filterParams.createdTimeEquals] - The specific created time to filter sessions. + * @param {string} [filterParams.createdTimeLessThan] - Filter sessions created before this time. + * @param {string} [filterParams.createdTimeGreaterThan] - Filter sessions created after this time. + * @param {string} [filterParams.createdTimeLessOrEqual] - Filter sessions created before or at this time. + * @param {string} [filterParams.createdTimeGreaterOrEqual] - Filter sessions created after or at this time. + * @param {string} [filterParams.expiryTimeEquals] - The specific expiry time to filter sessions. + * @param {string} [filterParams.expiryTimeLessThan] - Filter sessions expiring before this time. + * @param {string} [filterParams.expiryTimeGreaterThan] - Filter sessions expiring after this time. + * @param {string} [filterParams.expiryTimeLessOrEqual] - Filter sessions expiring before or at this time. + * @param {string} [filterParams.expiryTimeGreaterOrEqual] - Filter sessions expiring after or at this time. + * @param {number} [filterParams.durationEquals] - The duration in seconds to filter sessions. + * @param {number} [filterParams.durationLessThan] - Filter sessions with duration less than this value. + * @param {number} [filterParams.durationGreaterThan] - Filter sessions with duration greater than this value. + * @param {number} [filterParams.durationLessOrEqual] - Filter sessions with duration less than or equal to this value. + * @param {number} [filterParams.durationGreaterOrEqual] - Filter sessions with duration greater than or equal to this value. + * @param {number} [filterParams.limit] - The maximum number of sessions to retrieve. + * @param {number} [filterParams.offset] - The offset for paginated results. + * @returns {Promise} - Resolves to a PlivoGenericResponse object + * @throws {Error} - Throws an error if the list masking sessions request fails + */ + listMaskingSession(params ? : {}): Promise < ListMaskingSessionResponse > ; + + /** + * Get a masking session + * @method + * @param {string} sessionUuid - unique idenfier of a session + * @promise {object} returns PlivoGenericResponse Object + * @fail {Error} returns Error + */ + getMaskingSession(sessionUuid: string): Promise < GetMaskingSessionResponse > ; + /** + * Delete a masking session + * @method + * @param {string} sessionUuid - unique idenfier of a session + * @promise {object} returns PlivoGenericResponse Object + * @fail {Error} returns Error + */ + deleteMaskingSession(sessionUuid: string): Promise < DeleteMaskingSessionResponse > ; +} \ No newline at end of file diff --git a/types/rest/client-test.d.ts b/types/rest/client-test.d.ts index 29572f6b..7b5732d9 100644 --- a/types/rest/client-test.d.ts +++ b/types/rest/client-test.d.ts @@ -16,6 +16,7 @@ export class Client { media: MediaInterface; loa: LOAInterface; hostedMessagingNumber: HostedMessagingNumberInterface; + maskingSession: MaskingSessionInterface; } /** * Plivo API client which can be used to access the Plivo APIs. @@ -43,3 +44,5 @@ import { MediaInterface } from "../resources/media.js"; import { Phlo } from "../resources/phlo.js"; import { LOAInterface } from "../resources/loa.js"; import { HostedMessagingNumberInterface } from "../resources/hostedMessagingNumber.js"; +import { MaskingSessionInterface } from "../resources/maskingSession.js"; + diff --git a/types/rest/client.d.ts b/types/rest/client.d.ts index 261bd4fb..d369e38c 100644 --- a/types/rest/client.d.ts +++ b/types/rest/client.d.ts @@ -31,6 +31,7 @@ export class Client { complianceApplications: ComplianceApplicationInterface; loa: LOAInterface; hostedMessagingNumber: HostedMessagingNumberInterface; + maskingSession:MaskingSessionInterface; toJSON(...args: any[]): any; } /** @@ -65,3 +66,5 @@ import { ComplianceRequirementInterface } from "../resources/complianceRequireme import { ComplianceApplicationInterface } from "../resources/complianceApplications"; import { LOAInterface } from "../resources/loa"; import { HostedMessagingNumberInterface } from "../resources/hostedMessagingNumber"; +import { MaskingSessionInterface } from "../resources/maskingSession.js"; +