diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 549aca2..0727d41 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -23,6 +23,8 @@ models/AnsweredBy.ts models/ApplicationList.ts models/ApplicationRequest.ts models/ApplicationResult.ts +models/AudioStream.ts +models/AudioStreamWebhook.ts models/AvailableNumber.ts models/AvailableNumberList.ts models/BargeInReason.ts @@ -34,6 +36,7 @@ models/CallDirection.ts models/CallEndedReason.ts models/CallList.ts models/CallResult.ts +models/CallResultAllOfSubresourceUris.ts models/CallStatus.ts models/CallStatusWebhook.ts models/Capabilities.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 3292a11..312f92e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,15 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm None + + +## [4.4.0] - 2026-03-04 + +### Added + +- New parameters for fetching recordings (start time and end time) +- Audio Streaming feature + ## [4.3.0] - 2025-10-28 diff --git a/DefaultApi.md b/DefaultApi.md index 36efdd3..1fac586 100644 --- a/DefaultApi.md +++ b/DefaultApi.md @@ -251,7 +251,7 @@ apiInstance | Status code | Description | Response headers | | ----------- | ------------------------- | ---------------- | -| **200** | Successfuly created queue | - | +| **201** | Successfuly created queue | - | [[Back to top]](#) [[Back to API list]](README.md#documentation-for-api-endpoints) [[Back to Model list]](README.md#documentation-for-models) [[Back to README]](README.md) @@ -2637,6 +2637,12 @@ let body: freeclimb.DefaultApiListCallRecordingsRequest = { // string | Only show recordings created on the specified date, in the form *YYYY-MM-DD*. (optional) dateCreated: "dateCreated_example", + + // string | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + startTime: "startTime_example", + + // string | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + endTime: "endTime_example", }; apiInstance @@ -2649,10 +2655,12 @@ apiInstance ### Parameters -| Name | Type | Description | Notes | -| --------------- | ------------ | ----------------------------------------------------------------------------- | -------------------------------- | -| **callId** | [**string**] | String that uniquely identifies this call resource. | defaults to undefined | -| **dateCreated** | [**string**] | Only show recordings created on the specified date, in the form _YYYY-MM-DD_. | (optional) defaults to undefined | +| Name | Type | Description | Notes | +| --------------- | ------------ | ---------------------------------------------------------------------------------- | -------------------------------- | +| **callId** | [**string**] | String that uniquely identifies this call resource. | defaults to undefined | +| **dateCreated** | [**string**] | Only show recordings created on the specified date, in the form _YYYY-MM-DD_. | (optional) defaults to undefined | +| **startTime** | [**string**] | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. | (optional) defaults to undefined | +| **endTime** | [**string**] | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. | (optional) defaults to undefined | ### Return type @@ -2692,6 +2700,9 @@ const configuration = freeclimb.createConfiguration({ const apiInstance = new freeclimb.DefaultApi(configuration); let body: freeclimb.DefaultApiListCallsRequest = { + // boolean | If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned (optional) + usedAudioStream: false, + // boolean | If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. (optional) active: false, @@ -2721,6 +2732,9 @@ let body: freeclimb.DefaultApiListCallsRequest = { // number | The maximum riskScore that should be included in the list. (optional) riskScoreMax: 1, + + // boolean | Only show Calls that were originated via WebRTC. (optional) + webRTC: false, }; apiInstance @@ -2733,18 +2747,20 @@ apiInstance ### Parameters -| Name | Type | Description | Notes | -| ----------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -| **active** | [**boolean**] | If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. | (optional) defaults to false | -| **to** | [**string**] | Only show Calls to this phone number. | (optional) defaults to undefined | -| **\_from** | [**string**] | Only show Calls from this phone number. | (optional) defaults to undefined | -| **status** | **CallStatus** | Only show Calls currently in this status. May be `queued`, `ringing`, `inProgress`, `canceled`, `completed`, `failed`, `busy`, or `noAnswer`. | (optional) defaults to undefined | -| **startTime** | [**string**] | Only show Calls that started at or after this time, given as YYYY-MM-DD hh:mm:ss. | (optional) defaults to undefined | -| **endTime** | [**string**] | Only show Calls that ended at or before this time, given as YYYY-MM- DD hh:mm:ss. | (optional) defaults to undefined | -| **parentCallId** | [**string**] | Only show Calls spawned by the call with this ID. | (optional) defaults to undefined | -| **applicationId** | **Array<string>** | Only show calls belonging to the given applicationId. This parameter can be repeated to return calls from multiple Applications. | (optional) defaults to undefined | -| **riskScoreMin** | [**number**] | The minimum riskScore that should be included in the list. | (optional) defaults to undefined | -| **riskScoreMax** | [**number**] | The maximum riskScore that should be included in the list. | (optional) defaults to undefined | +| Name | Type | Description | Notes | +| ------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | +| **usedAudioStream** | [**boolean**] | If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned | (optional) defaults to false | +| **active** | [**boolean**] | If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. | (optional) defaults to false | +| **to** | [**string**] | Only show Calls to this phone number. | (optional) defaults to undefined | +| **\_from** | [**string**] | Only show Calls from this phone number. | (optional) defaults to undefined | +| **status** | **CallStatus** | Only show Calls currently in this status. May be `queued`, `ringing`, `inProgress`, `canceled`, `completed`, `failed`, `busy`, or `noAnswer`. | (optional) defaults to undefined | +| **startTime** | [**string**] | Only show Calls that started at or after this time, given as YYYY-MM-DD hh:mm:ss. | (optional) defaults to undefined | +| **endTime** | [**string**] | Only show Calls that ended at or before this time, given as YYYY-MM- DD hh:mm:ss. | (optional) defaults to undefined | +| **parentCallId** | [**string**] | Only show Calls spawned by the call with this ID. | (optional) defaults to undefined | +| **applicationId** | **Array<string>** | Only show calls belonging to the given applicationId. This parameter can be repeated to return calls from multiple Applications. | (optional) defaults to undefined | +| **riskScoreMin** | [**number**] | The minimum riskScore that should be included in the list. | (optional) defaults to undefined | +| **riskScoreMax** | [**number**] | The maximum riskScore that should be included in the list. | (optional) defaults to undefined | +| **webRTC** | [**boolean**] | Only show Calls that were originated via WebRTC. | (optional) defaults to false | ### Return type @@ -2792,6 +2808,12 @@ let body: freeclimb.DefaultApiListConferenceRecordingsRequest = { // string | Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) dateCreated: "dateCreated_example", + + // string | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + startTime: "startTime_example", + + // string | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + endTime: "endTime_example", }; apiInstance @@ -2804,11 +2826,13 @@ apiInstance ### Parameters -| Name | Type | Description | Notes | -| ---------------- | ------------ | --------------------------------------------------------------------- | -------------------------------- | -| **conferenceId** | [**string**] | Show only Recordings made during the conference with this ID. | defaults to undefined | -| **callId** | [**string**] | Show only Recordings made during the Call with this ID. | (optional) defaults to undefined | -| **dateCreated** | [**string**] | Only show Recordings created on this date, formatted as _YYYY-MM-DD_. | (optional) defaults to undefined | +| Name | Type | Description | Notes | +| ---------------- | ------------ | ---------------------------------------------------------------------------------- | -------------------------------- | +| **conferenceId** | [**string**] | Show only Recordings made during the conference with this ID. | defaults to undefined | +| **callId** | [**string**] | Show only Recordings made during the Call with this ID. | (optional) defaults to undefined | +| **dateCreated** | [**string**] | Only show Recordings created on this date, formatted as _YYYY-MM-DD_. | (optional) defaults to undefined | +| **startTime** | [**string**] | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. | (optional) defaults to undefined | +| **endTime** | [**string**] | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. | (optional) defaults to undefined | ### Return type @@ -3216,6 +3240,12 @@ let body: freeclimb.DefaultApiListRecordingsRequest = { // string | Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) dateCreated: "dateCreated_example", + + // string | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + startTime: "startTime_example", + + // string | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + endTime: "endTime_example", }; apiInstance @@ -3228,11 +3258,13 @@ apiInstance ### Parameters -| Name | Type | Description | Notes | -| ---------------- | ------------ | --------------------------------------------------------------------- | -------------------------------- | -| **callId** | [**string**] | Show only Recordings made during the Call with this ID. | (optional) defaults to undefined | -| **conferenceId** | [**string**] | Show only Recordings made during the conference with this ID. | (optional) defaults to undefined | -| **dateCreated** | [**string**] | Only show Recordings created on this date, formatted as _YYYY-MM-DD_. | (optional) defaults to undefined | +| Name | Type | Description | Notes | +| ---------------- | ------------ | ---------------------------------------------------------------------------------- | -------------------------------- | +| **callId** | [**string**] | Show only Recordings made during the Call with this ID. | (optional) defaults to undefined | +| **conferenceId** | [**string**] | Show only Recordings made during the conference with this ID. | (optional) defaults to undefined | +| **dateCreated** | [**string**] | Only show Recordings created on this date, formatted as _YYYY-MM-DD_. | (optional) defaults to undefined | +| **startTime** | [**string**] | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. | (optional) defaults to undefined | +| **endTime** | [**string**] | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. | (optional) defaults to undefined | ### Return type diff --git a/README.md b/README.md index c307230..3000595 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,9 @@ This SDK is automatically generated by the [OpenAPI Generator](https://openapi-g ## Installing ```sh -npm install @freeclimb/sdk@4.3.0 +npm install @freeclimb/sdk@4.4.0 or -yarn add @freeclimb/sdk@4.3.0 +yarn add @freeclimb/sdk@4.4.0 ``` ## Getting Started diff --git a/__tests__/api/DefaultApi.spec.ts b/__tests__/api/DefaultApi.spec.ts index 33ef847..27ba468 100644 --- a/__tests__/api/DefaultApi.spec.ts +++ b/__tests__/api/DefaultApi.spec.ts @@ -201,6 +201,7 @@ describe("DefaultApi", () => { }); describe("#listCalls", () => { test("returns an instance of freeclimb.CallList", async () => { + const usedAudioStream = parameters.listCalls.usedAudioStream; const active = parameters.listCalls.active; const to = parameters.listCalls.to; const from = parameters.listCalls.from; @@ -211,8 +212,10 @@ describe("DefaultApi", () => { const applicationId = parameters.listCalls.applicationId; const riskScoreMin = parameters.listCalls.riskScoreMin; const riskScoreMax = parameters.listCalls.riskScoreMax; + const webRtc = parameters.listCalls.webRtc; let response = await apiInstance.listCalls( + usedAudioStream, active, to, from, @@ -223,6 +226,7 @@ describe("DefaultApi", () => { applicationId, riskScoreMin, riskScoreMax, + webRtc, ); expect(response).toBeInstanceOf(freeclimb.CallList); @@ -232,8 +236,15 @@ describe("DefaultApi", () => { test("returns an instance of freeclimb.RecordingList", async () => { const callId = parameters.listCallRecordings.callId; const dateCreated = parameters.listCallRecordings.dateCreated; + const startTime = parameters.listCallRecordings.startTime; + const endTime = parameters.listCallRecordings.endTime; - let response = await apiInstance.listCallRecordings(callId, dateCreated); + let response = await apiInstance.listCallRecordings( + callId, + dateCreated, + startTime, + endTime, + ); expect(response).toBeInstanceOf(freeclimb.RecordingList); }); @@ -338,11 +349,15 @@ describe("DefaultApi", () => { const conferenceId = parameters.listConferenceRecordings.conferenceId; const callId = parameters.listConferenceRecordings.callId; const dateCreated = parameters.listConferenceRecordings.dateCreated; + const startTime = parameters.listConferenceRecordings.startTime; + const endTime = parameters.listConferenceRecordings.endTime; let response = await apiInstance.listConferenceRecordings( conferenceId, callId, dateCreated, + startTime, + endTime, ); expect(response).toBeInstanceOf(freeclimb.RecordingList); @@ -453,11 +468,15 @@ describe("DefaultApi", () => { const callId = parameters.listRecordings.callId; const conferenceId = parameters.listRecordings.conferenceId; const dateCreated = parameters.listRecordings.dateCreated; + const startTime = parameters.listRecordings.startTime; + const endTime = parameters.listRecordings.endTime; let response = await apiInstance.listRecordings( callId, conferenceId, dateCreated, + startTime, + endTime, ); expect(response).toBeInstanceOf(freeclimb.RecordingList); diff --git a/__tests__/models/AudioStream.spec.ts b/__tests__/models/AudioStream.spec.ts new file mode 100644 index 0000000..0ffc112 --- /dev/null +++ b/__tests__/models/AudioStream.spec.ts @@ -0,0 +1,144 @@ +import * as freeclimb from "../../index"; +import { describe, expect, it } from "@jest/globals"; + +describe("AudioStream", () => { + describe("Test with truthy values", () => { + const Klass = freeclimb.AudioStream; + let model: freeclimb.AudioStream = new freeclimb.AudioStream({ + ["location"]: "https://123.abc", + ["actionUrl"]: "https://123.abc", + ["contentType"]: "test_contentType", + ["metaData"]: [], + ["privacyMode"]: true, + }); + describe("AudioStream class test", () => { + it("resolves to the class type upon initialization", () => { + expect(model).toBeInstanceOf(freeclimb.AudioStream); + }); + }); + + describe(".location", () => { + it("resolves to particular value on initialization", () => { + const value = "https://123.abc"; + expect(model["location"]).toBe(value); + }); + }); + describe(".actionUrl", () => { + it("resolves to particular value on initialization", () => { + const value = "https://123.abc"; + expect(model["actionUrl"]).toBe(value); + }); + }); + describe(".contentType", () => { + it("resolves to particular value on initialization", () => { + const value = "test_contentType"; + expect(model["contentType"]).toBe(value); + }); + }); + describe(".metaData", () => { + it("resolves to particular value on initialization", () => { + const value: any[] = []; + expect(model["metaData"]).toStrictEqual(value); + }); + }); + describe(".privacyMode", () => { + it("resolves to particular value on initialization", () => { + const value = true; + expect(model["privacyMode"]).toBe(value); + }); + }); + }); + describe("Test with falsy values", () => { + const Klass = freeclimb.AudioStream; + let model: freeclimb.AudioStream = new freeclimb.AudioStream({ + ["location"]: "", + ["actionUrl"]: "", + ["contentType"]: "", + ["metaData"]: [], + ["privacyMode"]: false, + }); + describe("AudioStream class test", () => { + it("resolves to the class type upon initialization", () => { + expect(model).toBeInstanceOf(freeclimb.AudioStream); + }); + }); + + describe(".location", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["location"]).toBe(value); + }); + }); + describe(".actionUrl", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["actionUrl"]).toBe(value); + }); + }); + describe(".contentType", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["contentType"]).toBe(value); + }); + }); + describe(".metaData", () => { + it("resolves to particular value on initialization", () => { + const value: any[] = []; + expect(model["metaData"]).toStrictEqual(value); + }); + }); + describe(".privacyMode", () => { + it("resolves to particular value on initialization", () => { + const value = false; + expect(model["privacyMode"]).toBe(value); + }); + }); + }); + describe("Test with only required values", () => { + const Klass = freeclimb.AudioStream; + let constructorArguments = { + ["location"]: "https://123.abc", + }; + let model: freeclimb.AudioStream = new freeclimb.AudioStream( + constructorArguments, + ); + + describe("#location", () => { + it("resolves to initialization value", () => { + expect(model["location"]).toBe(constructorArguments["location"]); + }); + }); + describe("#actionUrl", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "actionUrl", + )?.defaultValue; + expect(model["actionUrl"]).toBe(value); + }); + }); + describe("#contentType", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "contentType", + )?.defaultValue; + expect(model["contentType"]).toBe(value); + }); + }); + describe("#metaData", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "metaData", + )?.defaultValue; + expect(model["metaData"]).toBe(value); + }); + }); + describe("#privacyMode", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "privacyMode", + )?.defaultValue; + expect(model["privacyMode"]).toBe(value); + }); + }); + }); +}); diff --git a/__tests__/models/AudioStreamWebhook.spec.ts b/__tests__/models/AudioStreamWebhook.spec.ts new file mode 100644 index 0000000..63cf4fd --- /dev/null +++ b/__tests__/models/AudioStreamWebhook.spec.ts @@ -0,0 +1,255 @@ +import * as freeclimb from "../../index"; +import { describe, expect, it } from "@jest/globals"; + +describe("AudioStreamWebhook", () => { + describe("Test with truthy values", () => { + const Klass = freeclimb.AudioStreamWebhook; + let model: freeclimb.AudioStreamWebhook = new freeclimb.AudioStreamWebhook({ + ["requestType"]: "test_requestType", + ["callId"]: "test_callId", + ["accountId"]: "test_accountId", + ["from"]: "test_from", + ["to"]: "test_to", + + ["callStatus"]: freeclimb.CallStatus.QUEUED, + + ["direction"]: freeclimb.CallDirection.INBOUND, + ["conferenceId"]: "test_conferenceId", + ["queueId"]: "test_queueId", + }); + describe("AudioStreamWebhook class test", () => { + it("resolves to the class type upon initialization", () => { + expect(model).toBeInstanceOf(freeclimb.AudioStreamWebhook); + }); + }); + + describe(".requestType", () => { + it("resolves to particular value on initialization", () => { + const value = "test_requestType"; + expect(model["requestType"]).toBe(value); + }); + }); + describe(".callId", () => { + it("resolves to particular value on initialization", () => { + const value = "test_callId"; + expect(model["callId"]).toBe(value); + }); + }); + describe(".accountId", () => { + it("resolves to particular value on initialization", () => { + const value = "test_accountId"; + expect(model["accountId"]).toBe(value); + }); + }); + describe(".from", () => { + it("resolves to particular value on initialization", () => { + const value = "test_from"; + expect(model["from"]).toBe(value); + }); + }); + describe(".to", () => { + it("resolves to particular value on initialization", () => { + const value = "test_to"; + expect(model["to"]).toBe(value); + }); + }); + describe(".callStatus", () => { + it("resolves to particular value on initialization", () => { + const value = "queued"; + expect(model["callStatus"]).toBe(value); + }); + }); + describe(".direction", () => { + it("resolves to particular value on initialization", () => { + const value = "inbound"; + expect(model["direction"]).toBe(value); + }); + }); + describe(".conferenceId", () => { + it("resolves to particular value on initialization", () => { + const value = "test_conferenceId"; + expect(model["conferenceId"]).toBe(value); + }); + }); + describe(".queueId", () => { + it("resolves to particular value on initialization", () => { + const value = "test_queueId"; + expect(model["queueId"]).toBe(value); + }); + }); + describe(".deserialize", () => { + it("returns an instance of AudioStreamWebhook", () => { + expect( + freeclimb.AudioStreamWebhook.deserialize( + '{ "requestType": "audioStream"}', + ), + ).toBeInstanceOf(freeclimb.AudioStreamWebhook); + }); + }); + }); + describe("Test with falsy values", () => { + const Klass = freeclimb.AudioStreamWebhook; + let model: freeclimb.AudioStreamWebhook = new freeclimb.AudioStreamWebhook({ + ["requestType"]: "", + ["callId"]: "", + ["accountId"]: "", + ["from"]: "", + ["to"]: "", + + ["callStatus"]: freeclimb.CallStatus.QUEUED, + + ["direction"]: freeclimb.CallDirection.INBOUND, + ["conferenceId"]: "", + ["queueId"]: "", + }); + describe("AudioStreamWebhook class test", () => { + it("resolves to the class type upon initialization", () => { + expect(model).toBeInstanceOf(freeclimb.AudioStreamWebhook); + }); + }); + + describe(".requestType", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["requestType"]).toBe(value); + }); + }); + describe(".callId", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["callId"]).toBe(value); + }); + }); + describe(".accountId", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["accountId"]).toBe(value); + }); + }); + describe(".from", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["from"]).toBe(value); + }); + }); + describe(".to", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["to"]).toBe(value); + }); + }); + describe(".callStatus", () => { + it("resolves to particular value on initialization", () => { + const value = "queued"; + expect(model["callStatus"]).toBe(value); + }); + }); + describe(".direction", () => { + it("resolves to particular value on initialization", () => { + const value = "inbound"; + expect(model["direction"]).toBe(value); + }); + }); + describe(".conferenceId", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["conferenceId"]).toBe(value); + }); + }); + describe(".queueId", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["queueId"]).toBe(value); + }); + }); + describe(".deserialize", () => { + it("returns an instance of AudioStreamWebhook", () => { + expect( + freeclimb.AudioStreamWebhook.deserialize( + '{ "requestType": "audioStream"}', + ), + ).toBeInstanceOf(freeclimb.AudioStreamWebhook); + }); + }); + }); + describe("Test with only required values", () => { + const Klass = freeclimb.AudioStreamWebhook; + let constructorArguments = {}; + let model: freeclimb.AudioStreamWebhook = new freeclimb.AudioStreamWebhook( + constructorArguments, + ); + + describe("#requestType", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "requestType", + )?.defaultValue; + expect(model["requestType"]).toBe(value); + }); + }); + describe("#callId", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "callId", + )?.defaultValue; + expect(model["callId"]).toBe(value); + }); + }); + describe("#accountId", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "accountId", + )?.defaultValue; + expect(model["accountId"]).toBe(value); + }); + }); + describe("#from", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "from", + )?.defaultValue; + expect(model["from"]).toBe(value); + }); + }); + describe("#to", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "to", + )?.defaultValue; + expect(model["to"]).toBe(value); + }); + }); + describe("#callStatus", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "callStatus", + )?.defaultValue; + expect(model["callStatus"]).toBe(value); + }); + }); + describe("#direction", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "direction", + )?.defaultValue; + expect(model["direction"]).toBe(value); + }); + }); + describe("#conferenceId", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "conferenceId", + )?.defaultValue; + expect(model["conferenceId"]).toBe(value); + }); + }); + describe("#queueId", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "queueId", + )?.defaultValue; + expect(model["queueId"]).toBe(value); + }); + }); + }); +}); diff --git a/__tests__/models/AvailableNumber.spec.ts b/__tests__/models/AvailableNumber.spec.ts index 1df2163..abc2598 100644 --- a/__tests__/models/AvailableNumber.spec.ts +++ b/__tests__/models/AvailableNumber.spec.ts @@ -6,14 +6,15 @@ describe("AvailableNumber", () => { const Klass = freeclimb.AvailableNumber; let model: freeclimb.AvailableNumber = new freeclimb.AvailableNumber({ ["capabilities"]: new freeclimb.Capabilities({ - ["voice"]: null as any, - ["sms"]: null as any, - ["tollFree"]: null as any, - ["tenDLC"]: null as any, - ["shortCode"]: null as any, + voice: null as any, + sms: null as any, + tollFree: null as any, + tenDLC: null as any, + shortCode: null as any, }), ["campaignId"]: "test_campaignId", ["phoneNumber"]: "test_phoneNumber", + ["alias"]: "test_alias", ["region"]: "test_region", ["country"]: "test_country", }); @@ -46,6 +47,12 @@ describe("AvailableNumber", () => { expect(model["phoneNumber"]).toBe(value); }); }); + describe(".alias", () => { + it("resolves to particular value on initialization", () => { + const value = "test_alias"; + expect(model["alias"]).toBe(value); + }); + }); describe(".region", () => { it("resolves to particular value on initialization", () => { const value = "test_region"; @@ -63,14 +70,15 @@ describe("AvailableNumber", () => { const Klass = freeclimb.AvailableNumber; let model: freeclimb.AvailableNumber = new freeclimb.AvailableNumber({ ["capabilities"]: new freeclimb.Capabilities({ - ["voice"]: null as any, - ["sms"]: null as any, - ["tollFree"]: null as any, - ["tenDLC"]: null as any, - ["shortCode"]: null as any, + voice: null as any, + sms: null as any, + tollFree: null as any, + tenDLC: null as any, + shortCode: null as any, }), ["campaignId"]: "", ["phoneNumber"]: "", + ["alias"]: "", ["region"]: "", ["country"]: "", }); @@ -82,11 +90,11 @@ describe("AvailableNumber", () => { describe(".capabilities", () => { it("resolves to particular value on initialization", () => { const value = new freeclimb.Capabilities({ - ["voice"]: null as any, - ["sms"]: null as any, - ["tollFree"]: null as any, - ["tenDLC"]: null as any, - ["shortCode"]: null as any, + voice: null as any, + sms: null as any, + tollFree: null as any, + tenDLC: null as any, + shortCode: null as any, }); expect(model["capabilities"]).toStrictEqual(value); }); @@ -103,6 +111,12 @@ describe("AvailableNumber", () => { expect(model["phoneNumber"]).toBe(value); }); }); + describe(".alias", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["alias"]).toBe(value); + }); + }); describe(".region", () => { it("resolves to particular value on initialization", () => { const value = ""; @@ -147,6 +161,14 @@ describe("AvailableNumber", () => { expect(model["phoneNumber"]).toBe(value); }); }); + describe("#alias", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "alias", + )?.defaultValue; + expect(model["alias"]).toBe(value); + }); + }); describe("#region", () => { it("resolves to default value on initialization if no value is provided", () => { const value = Klass.attributeTypeMap.find( diff --git a/__tests__/models/CallResult.spec.ts b/__tests__/models/CallResult.spec.ts index ae0e66c..ffe61df 100644 --- a/__tests__/models/CallResult.spec.ts +++ b/__tests__/models/CallResult.spec.ts @@ -9,6 +9,8 @@ describe("CallResult", () => { ["dateCreated"]: "test_dateCreated", ["dateUpdated"]: "test_dateUpdated", ["revision"]: 1, + ["dateCreatedISO"]: new Date("December 17, 1995 03:24:00"), + ["dateUpdatedISO"]: new Date("December 17, 1995 03:24:00"), ["callId"]: "test_callId", ["parentCallId"]: "test_parentCallId", ["accountId"]: "test_accountId", @@ -18,15 +20,20 @@ describe("CallResult", () => { ["status"]: freeclimb.CallStatus.QUEUED, ["startTime"]: "test_startTime", + ["startTimeISO"]: new Date("December 17, 1995 03:24:00"), ["connectTime"]: "test_connectTime", + ["connectTimeISO"]: new Date("December 17, 1995 03:24:00"), ["endTime"]: "test_endTime", + ["endTimeISO"]: new Date("December 17, 1995 03:24:00"), ["duration"]: 1, ["connectDuration"]: 1, + ["audioStreamDuration"]: 1, ["direction"]: freeclimb.CallDirection.INBOUND, ["answeredBy"]: freeclimb.AnsweredBy.HUMAN, - ["subresourceUris"]: {}, + ["callerName"]: "test_callerName", + ["webRTC"]: true, ["applicationId"]: "test_applicationId", }); @@ -59,6 +66,18 @@ describe("CallResult", () => { expect(model["revision"]).toBe(value); }); }); + describe(".dateCreatedISO", () => { + it("resolves to particular value on initialization", () => { + const value = new Date("December 17, 1995 03:24:00"); + expect(model["dateCreatedISO"]).toStrictEqual(value); + }); + }); + describe(".dateUpdatedISO", () => { + it("resolves to particular value on initialization", () => { + const value = new Date("December 17, 1995 03:24:00"); + expect(model["dateUpdatedISO"]).toStrictEqual(value); + }); + }); describe(".callId", () => { it("resolves to particular value on initialization", () => { const value = "test_callId"; @@ -107,18 +126,36 @@ describe("CallResult", () => { expect(model["startTime"]).toBe(value); }); }); + describe(".startTimeISO", () => { + it("resolves to particular value on initialization", () => { + const value = new Date("December 17, 1995 03:24:00"); + expect(model["startTimeISO"]).toStrictEqual(value); + }); + }); describe(".connectTime", () => { it("resolves to particular value on initialization", () => { const value = "test_connectTime"; expect(model["connectTime"]).toBe(value); }); }); + describe(".connectTimeISO", () => { + it("resolves to particular value on initialization", () => { + const value = new Date("December 17, 1995 03:24:00"); + expect(model["connectTimeISO"]).toStrictEqual(value); + }); + }); describe(".endTime", () => { it("resolves to particular value on initialization", () => { const value = "test_endTime"; expect(model["endTime"]).toBe(value); }); }); + describe(".endTimeISO", () => { + it("resolves to particular value on initialization", () => { + const value = new Date("December 17, 1995 03:24:00"); + expect(model["endTimeISO"]).toStrictEqual(value); + }); + }); describe(".duration", () => { it("resolves to particular value on initialization", () => { const value = 1; @@ -131,6 +168,12 @@ describe("CallResult", () => { expect(model["connectDuration"]).toBe(value); }); }); + describe(".audioStreamDuration", () => { + it("resolves to particular value on initialization", () => { + const value = 1; + expect(model["audioStreamDuration"]).toBe(value); + }); + }); describe(".direction", () => { it("resolves to particular value on initialization", () => { const value = "inbound"; @@ -143,13 +186,21 @@ describe("CallResult", () => { expect(model["answeredBy"]).toBe(value); }); }); - describe(".subresourceUris", () => { + describe(".callerName", () => { + it("resolves to particular value on initialization", () => { + const value = "test_callerName"; + expect(model["callerName"]).toBe(value); + }); + }); + describe(".webRTC", () => { it("resolves to particular value on initialization", () => { - const value = {}; - const receivedValue: any = model["subresourceUris"]; - expect(receivedValue).toStrictEqual(value); + const value = true; + expect(model["webRTC"]).toBe(value); }); }); + describe(".subresourceUris", () => { + it("resolves to particular value on initialization", () => {}); + }); describe(".applicationId", () => { it("resolves to particular value on initialization", () => { const value = "test_applicationId"; @@ -164,6 +215,8 @@ describe("CallResult", () => { ["dateCreated"]: "", ["dateUpdated"]: "", ["revision"]: 0, + ["dateCreatedISO"]: undefined, + ["dateUpdatedISO"]: undefined, ["callId"]: "", ["parentCallId"]: "", ["accountId"]: "", @@ -173,15 +226,20 @@ describe("CallResult", () => { ["status"]: freeclimb.CallStatus.QUEUED, ["startTime"]: "", + ["startTimeISO"]: undefined, ["connectTime"]: "", + ["connectTimeISO"]: undefined, ["endTime"]: "", + ["endTimeISO"]: undefined, ["duration"]: 0, ["connectDuration"]: 0, + ["audioStreamDuration"]: 0, ["direction"]: freeclimb.CallDirection.INBOUND, ["answeredBy"]: freeclimb.AnsweredBy.HUMAN, - ["subresourceUris"]: {}, + ["callerName"]: "", + ["webRTC"]: false, ["applicationId"]: "", }); @@ -214,6 +272,18 @@ describe("CallResult", () => { expect(model["revision"]).toBe(value); }); }); + describe(".dateCreatedISO", () => { + it("resolves to particular value on initialization", () => { + const value = undefined; + expect(model["dateCreatedISO"]).toStrictEqual(value); + }); + }); + describe(".dateUpdatedISO", () => { + it("resolves to particular value on initialization", () => { + const value = undefined; + expect(model["dateUpdatedISO"]).toStrictEqual(value); + }); + }); describe(".callId", () => { it("resolves to particular value on initialization", () => { const value = ""; @@ -262,18 +332,36 @@ describe("CallResult", () => { expect(model["startTime"]).toBe(value); }); }); + describe(".startTimeISO", () => { + it("resolves to particular value on initialization", () => { + const value = undefined; + expect(model["startTimeISO"]).toStrictEqual(value); + }); + }); describe(".connectTime", () => { it("resolves to particular value on initialization", () => { const value = ""; expect(model["connectTime"]).toBe(value); }); }); + describe(".connectTimeISO", () => { + it("resolves to particular value on initialization", () => { + const value = undefined; + expect(model["connectTimeISO"]).toStrictEqual(value); + }); + }); describe(".endTime", () => { it("resolves to particular value on initialization", () => { const value = ""; expect(model["endTime"]).toBe(value); }); }); + describe(".endTimeISO", () => { + it("resolves to particular value on initialization", () => { + const value = undefined; + expect(model["endTimeISO"]).toStrictEqual(value); + }); + }); describe(".duration", () => { it("resolves to particular value on initialization", () => { const value = 0; @@ -286,6 +374,12 @@ describe("CallResult", () => { expect(model["connectDuration"]).toBe(value); }); }); + describe(".audioStreamDuration", () => { + it("resolves to particular value on initialization", () => { + const value = 0; + expect(model["audioStreamDuration"]).toBe(value); + }); + }); describe(".direction", () => { it("resolves to particular value on initialization", () => { const value = "inbound"; @@ -298,13 +392,21 @@ describe("CallResult", () => { expect(model["answeredBy"]).toBe(value); }); }); - describe(".subresourceUris", () => { + describe(".callerName", () => { it("resolves to particular value on initialization", () => { - const value = {}; - const receivedValue: any = model["subresourceUris"]; - expect(receivedValue).toStrictEqual(value); + const value = ""; + expect(model["callerName"]).toBe(value); }); }); + describe(".webRTC", () => { + it("resolves to particular value on initialization", () => { + const value = false; + expect(model["webRTC"]).toBe(value); + }); + }); + describe(".subresourceUris", () => { + it("resolves to particular value on initialization", () => {}); + }); describe(".applicationId", () => { it("resolves to particular value on initialization", () => { const value = ""; @@ -324,6 +426,22 @@ describe("CallResult", () => { constructorArguments, ); + describe("#dateCreatedISO", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "dateCreatedISO", + )?.defaultValue; + expect(model["dateCreatedISO"]).toBe(value); + }); + }); + describe("#dateUpdatedISO", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "dateUpdatedISO", + )?.defaultValue; + expect(model["dateUpdatedISO"]).toBe(value); + }); + }); describe("#callId", () => { it("resolves to default value on initialization if no value is provided", () => { const value = Klass.attributeTypeMap.find( @@ -388,6 +506,14 @@ describe("CallResult", () => { expect(model["startTime"]).toBe(value); }); }); + describe("#startTimeISO", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "startTimeISO", + )?.defaultValue; + expect(model["startTimeISO"]).toBe(value); + }); + }); describe("#connectTime", () => { it("resolves to default value on initialization if no value is provided", () => { const value = Klass.attributeTypeMap.find( @@ -396,6 +522,14 @@ describe("CallResult", () => { expect(model["connectTime"]).toBe(value); }); }); + describe("#connectTimeISO", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "connectTimeISO", + )?.defaultValue; + expect(model["connectTimeISO"]).toBe(value); + }); + }); describe("#endTime", () => { it("resolves to default value on initialization if no value is provided", () => { const value = Klass.attributeTypeMap.find( @@ -404,6 +538,14 @@ describe("CallResult", () => { expect(model["endTime"]).toBe(value); }); }); + describe("#endTimeISO", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "endTimeISO", + )?.defaultValue; + expect(model["endTimeISO"]).toBe(value); + }); + }); describe("#duration", () => { it("resolves to default value on initialization if no value is provided", () => { const value = Klass.attributeTypeMap.find( @@ -420,6 +562,14 @@ describe("CallResult", () => { expect(model["connectDuration"]).toBe(value); }); }); + describe("#audioStreamDuration", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "audioStreamDuration", + )?.defaultValue; + expect(model["audioStreamDuration"]).toBe(value); + }); + }); describe("#direction", () => { it("resolves to default value on initialization if no value is provided", () => { const value = Klass.attributeTypeMap.find( @@ -436,6 +586,22 @@ describe("CallResult", () => { expect(model["answeredBy"]).toBe(value); }); }); + describe("#callerName", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "callerName", + )?.defaultValue; + expect(model["callerName"]).toBe(value); + }); + }); + describe("#webRTC", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "webRTC", + )?.defaultValue; + expect(model["webRTC"]).toBe(value); + }); + }); describe("#subresourceUris", () => { it("resolves to default value on initialization if no value is provided", () => { const value = Klass.attributeTypeMap.find( diff --git a/__tests__/models/CallResultAllOfSubresourceUris.spec.ts b/__tests__/models/CallResultAllOfSubresourceUris.spec.ts new file mode 100644 index 0000000..f075f7e --- /dev/null +++ b/__tests__/models/CallResultAllOfSubresourceUris.spec.ts @@ -0,0 +1,78 @@ +import * as freeclimb from "../../index"; +import { describe, expect, it } from "@jest/globals"; + +describe("CallResultAllOfSubresourceUris", () => { + describe("Test with truthy values", () => { + const Klass = freeclimb.CallResultAllOfSubresourceUris; + let model: freeclimb.CallResultAllOfSubresourceUris = + new freeclimb.CallResultAllOfSubresourceUris({ + ["logs"]: "test_logs", + ["recordings"]: "test_recordings", + }); + describe("CallResultAllOfSubresourceUris class test", () => { + it("resolves to the class type upon initialization", () => { + expect(model).toBeInstanceOf(freeclimb.CallResultAllOfSubresourceUris); + }); + }); + describe(".logs", () => { + it("resolves to particular value on initialization", () => { + const value = "test_logs"; + expect(model["logs"]).toBe(value); + }); + }); + describe(".recordings", () => { + it("resolves to particular value on initialization", () => { + const value = "test_recordings"; + expect(model["recordings"]).toBe(value); + }); + }); + }); + describe("Test with falsy values", () => { + const Klass = freeclimb.CallResultAllOfSubresourceUris; + let model: freeclimb.CallResultAllOfSubresourceUris = + new freeclimb.CallResultAllOfSubresourceUris({ + ["logs"]: "", + ["recordings"]: "", + }); + describe("CallResultAllOfSubresourceUris class test", () => { + it("resolves to the class type upon initialization", () => { + expect(model).toBeInstanceOf(freeclimb.CallResultAllOfSubresourceUris); + }); + }); + describe(".logs", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["logs"]).toBe(value); + }); + }); + describe(".recordings", () => { + it("resolves to particular value on initialization", () => { + const value = ""; + expect(model["recordings"]).toBe(value); + }); + }); + }); + describe("Test with only required values", () => { + const Klass = freeclimb.CallResultAllOfSubresourceUris; + let constructorArguments = {}; + let model: freeclimb.CallResultAllOfSubresourceUris = + new freeclimb.CallResultAllOfSubresourceUris(constructorArguments); + + describe("#logs", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "logs", + )?.defaultValue; + expect(model["logs"]).toBe(value); + }); + }); + describe("#recordings", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "recordings", + )?.defaultValue; + expect(model["recordings"]).toBe(value); + }); + }); + }); +}); diff --git a/__tests__/models/ConferenceResult.spec.ts b/__tests__/models/ConferenceResult.spec.ts index 00b6fba..e95a9f6 100644 --- a/__tests__/models/ConferenceResult.spec.ts +++ b/__tests__/models/ConferenceResult.spec.ts @@ -12,8 +12,6 @@ describe("ConferenceResult", () => { ["conferenceId"]: "test_conferenceId", ["accountId"]: "test_accountId", ["alias"]: "test_alias", - - ["playBeep"]: freeclimb.PlayBeep.ALWAYS, ["record"]: true, ["status"]: freeclimb.ConferenceStatus.EMPTY, @@ -70,10 +68,7 @@ describe("ConferenceResult", () => { }); }); describe(".playBeep", () => { - it("resolves to particular value on initialization", () => { - const value = "always"; - expect(model["playBeep"]).toBe(value); - }); + it("resolves to particular value on initialization", () => {}); }); describe(".record", () => { it("resolves to particular value on initialization", () => { @@ -123,8 +118,6 @@ describe("ConferenceResult", () => { ["conferenceId"]: "", ["accountId"]: "", ["alias"]: "", - - ["playBeep"]: freeclimb.PlayBeep.ALWAYS, ["record"]: false, ["status"]: freeclimb.ConferenceStatus.EMPTY, @@ -181,10 +174,7 @@ describe("ConferenceResult", () => { }); }); describe(".playBeep", () => { - it("resolves to particular value on initialization", () => { - const value = "always"; - expect(model["playBeep"]).toBe(value); - }); + it("resolves to particular value on initialization", () => {}); }); describe(".record", () => { it("resolves to particular value on initialization", () => { diff --git a/__tests__/models/ExportRequest.spec.ts b/__tests__/models/ExportRequest.spec.ts index a6c8948..2938031 100644 --- a/__tests__/models/ExportRequest.spec.ts +++ b/__tests__/models/ExportRequest.spec.ts @@ -9,7 +9,7 @@ describe("ExportRequest", () => { ["format"]: [], ["output"]: new freeclimb.ExportRequestOutput({ - ["type"]: null as any, + type: null as any, }), ["query"]: {}, }); @@ -52,7 +52,7 @@ describe("ExportRequest", () => { ["format"]: [], ["output"]: new freeclimb.ExportRequestOutput({ - ["type"]: null as any, + type: null as any, }), ["query"]: {}, }); @@ -76,7 +76,7 @@ describe("ExportRequest", () => { describe(".output", () => { it("resolves to particular value on initialization", () => { const value = new freeclimb.ExportRequestOutput({ - ["type"]: null as any, + type: null as any, }); expect(model["output"]).toStrictEqual(value); }); @@ -94,7 +94,7 @@ describe("ExportRequest", () => { ["resourceType"]: freeclimb.ExportResourceType.MESSAGES, ["output"]: new freeclimb.ExportRequestOutput({ - ["type"]: null as any, + type: null as any, }), }; let model: freeclimb.ExportRequest = new freeclimb.ExportRequest( diff --git a/__tests__/models/ExportResult.spec.ts b/__tests__/models/ExportResult.spec.ts index 2889a3f..4377dd4 100644 --- a/__tests__/models/ExportResult.spec.ts +++ b/__tests__/models/ExportResult.spec.ts @@ -20,7 +20,7 @@ describe("ExportResult", () => { ["format"]: [], ["output"]: new freeclimb.ExportResultOutput({ - ["type"]: null as any, + type: null as any, }), }); describe("ExportResult class test", () => { @@ -121,7 +121,7 @@ describe("ExportResult", () => { ["format"]: [], ["output"]: new freeclimb.ExportResultOutput({ - ["type"]: null as any, + type: null as any, }), }); describe("ExportResult class test", () => { @@ -198,7 +198,7 @@ describe("ExportResult", () => { describe(".output", () => { it("resolves to particular value on initialization", () => { const value = new freeclimb.ExportResultOutput({ - ["type"]: null as any, + type: null as any, }); expect(model["output"]).toStrictEqual(value); }); @@ -222,7 +222,7 @@ describe("ExportResult", () => { ["format"]: [], ["output"]: new freeclimb.ExportResultOutput({ - ["type"]: null as any, + type: null as any, }), }; let model: freeclimb.ExportResult = new freeclimb.ExportResult( diff --git a/__tests__/models/IncomingNumberResult.spec.ts b/__tests__/models/IncomingNumberResult.spec.ts index 326e0d9..014135f 100644 --- a/__tests__/models/IncomingNumberResult.spec.ts +++ b/__tests__/models/IncomingNumberResult.spec.ts @@ -12,11 +12,11 @@ describe("IncomingNumberResult", () => { ["revision"]: 1, ["capabilities"]: new freeclimb.Capabilities({ - ["voice"]: null as any, - ["sms"]: null as any, - ["tollFree"]: null as any, - ["tenDLC"]: null as any, - ["shortCode"]: null as any, + voice: null as any, + sms: null as any, + tollFree: null as any, + tenDLC: null as any, + shortCode: null as any, }), ["campaignId"]: "test_campaignId", ["phoneNumberId"]: "test_phoneNumberId", @@ -27,10 +27,6 @@ describe("IncomingNumberResult", () => { ["region"]: "test_region", ["country"]: "test_country", ["offnet"]: true, - - ["tfn"]: new freeclimb.TFN({ - ["campaignId"]: null as any, - }), }); describe("IncomingNumberResult class test", () => { it("resolves to the class type upon initialization", () => { @@ -128,12 +124,7 @@ describe("IncomingNumberResult", () => { }); }); describe(".tfn", () => { - it("resolves to particular value on initialization", () => { - const value = new freeclimb.TFN({ - campaignId: null as any, - }); - expect(model["tfn"]).toStrictEqual(value); - }); + it("resolves to particular value on initialization", () => {}); }); }); describe("Test with falsy values", () => { @@ -146,11 +137,11 @@ describe("IncomingNumberResult", () => { ["revision"]: 0, ["capabilities"]: new freeclimb.Capabilities({ - ["voice"]: null as any, - ["sms"]: null as any, - ["tollFree"]: null as any, - ["tenDLC"]: null as any, - ["shortCode"]: null as any, + voice: null as any, + sms: null as any, + tollFree: null as any, + tenDLC: null as any, + shortCode: null as any, }), ["campaignId"]: "", ["phoneNumberId"]: "", @@ -161,10 +152,6 @@ describe("IncomingNumberResult", () => { ["region"]: "", ["country"]: "", ["offnet"]: false, - - ["tfn"]: new freeclimb.TFN({ - ["campaignId"]: null as any, - }), }); describe("IncomingNumberResult class test", () => { it("resolves to the class type upon initialization", () => { @@ -198,11 +185,11 @@ describe("IncomingNumberResult", () => { describe(".capabilities", () => { it("resolves to particular value on initialization", () => { const value = new freeclimb.Capabilities({ - ["voice"]: null as any, - ["sms"]: null as any, - ["tollFree"]: null as any, - ["tenDLC"]: null as any, - ["shortCode"]: null as any, + voice: null as any, + sms: null as any, + tollFree: null as any, + tenDLC: null as any, + shortCode: null as any, }); expect(model["capabilities"]).toStrictEqual(value); }); @@ -262,12 +249,7 @@ describe("IncomingNumberResult", () => { }); }); describe(".tfn", () => { - it("resolves to particular value on initialization", () => { - const value = new freeclimb.TFN({ - ["campaignId"]: null as any, - }); - expect(model["tfn"]).toStrictEqual(value); - }); + it("resolves to particular value on initialization", () => {}); }); }); describe("Test with only required values", () => { diff --git a/__tests__/models/MessageResult.spec.ts b/__tests__/models/MessageResult.spec.ts index ca09128..0d4f37e 100644 --- a/__tests__/models/MessageResult.spec.ts +++ b/__tests__/models/MessageResult.spec.ts @@ -22,10 +22,6 @@ describe("MessageResult", () => { ["campaignId"]: "test_campaignId", ["segmentCount"]: 1.0, ["mediaUrls"]: [], - - ["tfn"]: new freeclimb.TFN({ - ["campaignId"]: null as any, - }), ["phoneNumberId"]: "test_phoneNumberId", ["applicationId"]: "test_applicationId", }); @@ -131,12 +127,7 @@ describe("MessageResult", () => { }); }); describe(".tfn", () => { - it("resolves to particular value on initialization", () => { - const value = new freeclimb.TFN({ - campaignId: null as any, - }); - expect(model["tfn"]).toStrictEqual(value); - }); + it("resolves to particular value on initialization", () => {}); }); describe(".phoneNumberId", () => { it("resolves to particular value on initialization", () => { @@ -171,10 +162,6 @@ describe("MessageResult", () => { ["campaignId"]: "", ["segmentCount"]: 0.0, ["mediaUrls"]: [], - - ["tfn"]: new freeclimb.TFN({ - ["campaignId"]: null as any, - }), ["phoneNumberId"]: "", ["applicationId"]: "", }); @@ -280,12 +267,7 @@ describe("MessageResult", () => { }); }); describe(".tfn", () => { - it("resolves to particular value on initialization", () => { - const value = new freeclimb.TFN({ - ["campaignId"]: null as any, - }); - expect(model["tfn"]).toStrictEqual(value); - }); + it("resolves to particular value on initialization", () => {}); }); describe(".phoneNumberId", () => { it("resolves to particular value on initialization", () => { diff --git a/__tests__/models/QueueResult.spec.ts b/__tests__/models/QueueResult.spec.ts index 016720e..6b4b406 100644 --- a/__tests__/models/QueueResult.spec.ts +++ b/__tests__/models/QueueResult.spec.ts @@ -15,6 +15,7 @@ describe("QueueResult", () => { ["maxSize"]: 1, ["currentSize"]: 1, ["averageQueueRemovalTime"]: 1, + ["averageWaitTime"]: 1, ["subresourceUris"]: {}, }); describe("QueueResult class test", () => { @@ -82,6 +83,12 @@ describe("QueueResult", () => { expect(model["averageQueueRemovalTime"]).toBe(value); }); }); + describe(".averageWaitTime", () => { + it("resolves to particular value on initialization", () => { + const value = 1; + expect(model["averageWaitTime"]).toBe(value); + }); + }); describe(".subresourceUris", () => { it("resolves to particular value on initialization", () => { const value = {}; @@ -103,6 +110,7 @@ describe("QueueResult", () => { ["maxSize"]: 0, ["currentSize"]: 0, ["averageQueueRemovalTime"]: 0, + ["averageWaitTime"]: 0, ["subresourceUris"]: {}, }); describe("QueueResult class test", () => { @@ -170,6 +178,12 @@ describe("QueueResult", () => { expect(model["averageQueueRemovalTime"]).toBe(value); }); }); + describe(".averageWaitTime", () => { + it("resolves to particular value on initialization", () => { + const value = 0; + expect(model["averageWaitTime"]).toBe(value); + }); + }); describe(".subresourceUris", () => { it("resolves to particular value on initialization", () => { const value = {}; @@ -238,6 +252,14 @@ describe("QueueResult", () => { expect(model["averageQueueRemovalTime"]).toBe(value); }); }); + describe("#averageWaitTime", () => { + it("resolves to default value on initialization if no value is provided", () => { + const value = Klass.attributeTypeMap.find( + (attribute) => attribute.name === "averageWaitTime", + )?.defaultValue; + expect(model["averageWaitTime"]).toBe(value); + }); + }); describe("#subresourceUris", () => { it("resolves to default value on initialization if no value is provided", () => { const value = Klass.attributeTypeMap.find( diff --git a/__tests__/models/RequestType.spec.ts b/__tests__/models/RequestType.spec.ts index c7ea80b..a0dc9ed 100644 --- a/__tests__/models/RequestType.spec.ts +++ b/__tests__/models/RequestType.spec.ts @@ -72,6 +72,11 @@ describe("RequestType", () => { ); }); }); + describe(".AUDIO_STREAM", () => { + it("resolves to correct value for AUDIO_STREAM enum property", () => { + expect(freeclimb.RequestType.AUDIO_STREAM).toBe("audioStream"); + }); + }); describe(".REMOVE_FROM_QUEUE_NOTIFICATION", () => { it("resolves to correct value for REMOVE_FROM_QUEUE_NOTIFICATION enum property", () => { expect(freeclimb.RequestType.REMOVE_FROM_QUEUE_NOTIFICATION).toBe( diff --git a/__tests__/models/SMSTenDLCPartnerCampaign.spec.ts b/__tests__/models/SMSTenDLCPartnerCampaign.spec.ts index 5f1698d..1405c9b 100644 --- a/__tests__/models/SMSTenDLCPartnerCampaign.spec.ts +++ b/__tests__/models/SMSTenDLCPartnerCampaign.spec.ts @@ -37,8 +37,8 @@ describe("SMSTenDLCPartnerCampaign", () => { ["optoutMessage"]: "test_optoutMessage", ["brand"]: new freeclimb.SMSTenDLCPartnerCampaignBrand({ - ["email"]: null as any, - ["phone"]: null as any, + email: null as any, + phone: null as any, }), }); describe("SMSTenDLCPartnerCampaign class test", () => { @@ -259,8 +259,8 @@ describe("SMSTenDLCPartnerCampaign", () => { ["optoutMessage"]: "", ["brand"]: new freeclimb.SMSTenDLCPartnerCampaignBrand({ - ["email"]: null as any, - ["phone"]: null as any, + email: null as any, + phone: null as any, }), }); describe("SMSTenDLCPartnerCampaign class test", () => { @@ -439,8 +439,8 @@ describe("SMSTenDLCPartnerCampaign", () => { describe(".brand", () => { it("resolves to particular value on initialization", () => { const value = new freeclimb.SMSTenDLCPartnerCampaignBrand({ - ["email"]: null as any, - ["phone"]: null as any, + email: null as any, + phone: null as any, }); expect(model["brand"]).toStrictEqual(value); }); diff --git a/__tests__/testValues.ts b/__tests__/testValues.ts index 23bb25b..16296bb 100644 --- a/__tests__/testValues.ts +++ b/__tests__/testValues.ts @@ -87,10 +87,14 @@ export const parameters = { applicationId: ["AP0000000000000000000000000000000000000000"], riskScoreMin: 1, riskScoreMax: 90, + usedAudioStream: true, + webRtc: true, }, listCallRecordings: { callId: "TEST_CALL_ID", dateCreated: "TEST_DATE_CREATED", + startTime: "TEST_DATE_STARTED", + endTime: "TEST_DATE_ENDED", }, listCallLogs: { callId: "TEST_CALL_ID", @@ -123,6 +127,8 @@ export const parameters = { conferenceId: "TEST_CONFERENCE_ID", callId: "TEST_CALL_ID", dateCreated: "TEST_DATE_CREATED", + startTime: "TEST_DATE_STARTED", + endTime: "TEST_DATE_ENDED", }, updateAQueue: { queueId: "TEST_QUEUE_ID", @@ -154,6 +160,8 @@ export const parameters = { callId: "TEST_CALL_ID", conferenceId: "TEST_CONFERENCE_ID", dateCreated: "TEST_DATE_CREATED", + startTime: "TEST_DATE_STARTED", + endTime: "TEST_DATE_ENDED", }, getARecording: { recordingId: "TEST_RECORDING_ID", diff --git a/apis/DefaultApi.ts b/apis/DefaultApi.ts index e4e9fe6..068ebbf 100644 --- a/apis/DefaultApi.ts +++ b/apis/DefaultApi.ts @@ -2242,10 +2242,14 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { * @param callId String that uniquely identifies this call resource. * @param dateCreated Only show recordings created on the specified date, in the form *YYYY-MM-DD*. + * @param startTime Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + * @param endTime Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. */ public async listCallRecordings( callId: string, dateCreated?: string, + startTime?: string, + endTime?: string, _options?: Configuration, ): Promise { const _config = _options || this.configuration; @@ -2273,6 +2277,20 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { ObjectSerializer.serialize(dateCreated, "string", ""), ); } + // Query Params + if (startTime !== undefined) { + requestContext.setQueryParam( + "startTime", + ObjectSerializer.serialize(startTime, "string", ""), + ); + } + // Query Params + if (endTime !== undefined) { + requestContext.setQueryParam( + "endTime", + ObjectSerializer.serialize(endTime, "string", ""), + ); + } let authMethod: SecurityAuthentication | undefined; // Apply auth methods @@ -2292,6 +2310,7 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { /** * List Calls + * @param usedAudioStream If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned * @param active If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. * @param to Only show Calls to this phone number. * @param _from Only show Calls from this phone number. @@ -2302,8 +2321,10 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { * @param applicationId Only show calls belonging to the given applicationId. This parameter can be repeated to return calls from multiple Applications. * @param riskScoreMin The minimum riskScore that should be included in the list. * @param riskScoreMax The maximum riskScore that should be included in the list. + * @param webRTC Only show Calls that were originated via WebRTC. */ public async listCalls( + usedAudioStream?: boolean, active?: boolean, to?: string, _from?: string, @@ -2314,6 +2335,7 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { applicationId?: Array, riskScoreMin?: number, riskScoreMax?: number, + webRTC?: boolean, _options?: Configuration, ): Promise { const _config = _options || this.configuration; @@ -2332,6 +2354,13 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { ); requestContext.setHeaderParam("Accept", "application/json, */*;q=0.8"); // Query Params + if (usedAudioStream !== undefined) { + requestContext.setQueryParam( + "usedAudioStream", + ObjectSerializer.serialize(usedAudioStream, "boolean", ""), + ); + } + // Query Params if (active !== undefined) { requestContext.setQueryParam( "active", @@ -2401,6 +2430,13 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { ObjectSerializer.serialize(riskScoreMax, "number", ""), ); } + // Query Params + if (webRTC !== undefined) { + requestContext.setQueryParam( + "webRTC", + ObjectSerializer.serialize(webRTC, "boolean", ""), + ); + } let authMethod: SecurityAuthentication | undefined; // Apply auth methods @@ -2423,11 +2459,15 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { * @param conferenceId Show only Recordings made during the conference with this ID. * @param callId Show only Recordings made during the Call with this ID. * @param dateCreated Only show Recordings created on this date, formatted as *YYYY-MM-DD*. + * @param startTime Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + * @param endTime Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. */ public async listConferenceRecordings( conferenceId: string, callId?: string, dateCreated?: string, + startTime?: string, + endTime?: string, _options?: Configuration, ): Promise { const _config = _options || this.configuration; @@ -2470,6 +2510,20 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { ObjectSerializer.serialize(dateCreated, "string", ""), ); } + // Query Params + if (startTime !== undefined) { + requestContext.setQueryParam( + "startTime", + ObjectSerializer.serialize(startTime, "string", ""), + ); + } + // Query Params + if (endTime !== undefined) { + requestContext.setQueryParam( + "endTime", + ObjectSerializer.serialize(endTime, "string", ""), + ); + } let authMethod: SecurityAuthentication | undefined; // Apply auth methods @@ -2903,11 +2957,15 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { * @param callId Show only Recordings made during the Call with this ID. * @param conferenceId Show only Recordings made during the conference with this ID. * @param dateCreated Only show Recordings created on this date, formatted as *YYYY-MM-DD*. + * @param startTime Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + * @param endTime Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. */ public async listRecordings( callId?: string, conferenceId?: string, dateCreated?: string, + startTime?: string, + endTime?: string, _options?: Configuration, ): Promise { const _config = _options || this.configuration; @@ -2946,6 +3004,20 @@ export class DefaultApiRequestFactory extends BaseAPIRequestFactory { ObjectSerializer.serialize(dateCreated, "string", ""), ); } + // Query Params + if (startTime !== undefined) { + requestContext.setQueryParam( + "startTime", + ObjectSerializer.serialize(startTime, "string", ""), + ); + } + // Query Params + if (endTime !== undefined) { + requestContext.setQueryParam( + "endTime", + ObjectSerializer.serialize(endTime, "string", ""), + ); + } let authMethod: SecurityAuthentication | undefined; // Apply auth methods @@ -4027,7 +4099,7 @@ export class DefaultApiResponseProcessor { const contentType = ObjectSerializer.normalizeMediaType( response.headers["content-type"], ); - if (isCodeInRange("200", response.httpStatusCode)) { + if (isCodeInRange("201", response.httpStatusCode)) { const body: QueueResult = ObjectSerializer.deserialize( ObjectSerializer.parse(await response.body.text(), contentType), "QueueResult", diff --git a/models/AudioStream.ts b/models/AudioStream.ts new file mode 100644 index 0000000..06d2d77 --- /dev/null +++ b/models/AudioStream.ts @@ -0,0 +1,120 @@ +/** + * FreeClimb API + * FreeClimb is a cloud-based application programming interface (API) that puts the power of the Vail platform in your hands. FreeClimb simplifies the process of creating applications that can use a full range of telephony features without requiring specialized or on-site telephony equipment. Using the FreeClimb REST API to write applications is easy! You have the option to use the language of your choice or hit the API directly. Your application can execute a command by issuing a RESTful request to the FreeClimb API. The base URL to send HTTP requests to the FreeClimb REST API is: /apiserver. FreeClimb authenticates and processes your request. + * + * OpenAPI spec version: 1.0.0 + * Contact: support@freeclimb.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { PerclCommand } from "./../models/PerclCommand"; +import { HttpFile } from "../http/http"; + +/** + * The `AudioStream` command transfers control of the call to a gRPC session. Upon completion of the gRPC session, if the actionUrl is specified, control can be returned to percl usage or the call will simply be hung up if the actionUrl is not specified. + */ + +interface AttributeType { + name: string; + baseName: string; + type: string; + format: string; + defaultValue: any; +} +interface ArgumentsType { + location: string; + actionUrl?: string; + contentType?: string; + metaData?: Array; + privacyMode?: boolean; +} +export class AudioStream extends PerclCommand { + /** + * The gRPC server location that will receive the grpc stream as a uri and must be port 80 or 443. + */ + "location": string; + /** + * A request is made to this URL when the gRPC session is concluded. The PerCL script returned in response to the actionUrl will be executed on the call. + */ + "actionUrl"?: string; + /** + * The type and sample rate of the audio being received over the channel must match the environmental sample rate. + */ + "contentType"?: string; + /** + * An arbitrary array of strings passed through FC to the GRPC server can be used to pass state or other information about the call. + */ + "metaData"?: Array; + /** + * Enables audio redaction with full call recording while gRPC session is running and blocks logging of any DTMFs received by FreeClimb. + */ + "privacyMode"?: boolean; + + static readonly discriminator: string | undefined = "command"; + + static readonly attributeTypeMap: AttributeType[] = [ + { + name: "location", + baseName: "location", + type: "string", + format: "uri", + + defaultValue: undefined, + }, + { + name: "actionUrl", + baseName: "actionUrl", + type: "string", + format: "uri", + + defaultValue: undefined, + }, + { + name: "contentType", + baseName: "contentType", + type: "string", + format: "", + + defaultValue: undefined, + }, + { + name: "metaData", + baseName: "metaData", + type: "Array", + format: "", + + defaultValue: undefined, + }, + { + name: "privacyMode", + baseName: "privacyMode", + type: "boolean", + format: "", + + defaultValue: undefined, + }, + ]; + + static getAttributeTypeMap(): AttributeType[] { + return super.getAttributeTypeMap().concat(AudioStream.attributeTypeMap); + } + public constructor(args: ArgumentsType) { + super({ command: "AudioStream" }); + const assign = (attribute: keyof ArgumentsType): T => { + return ( + args.hasOwnProperty(attribute) + ? args[attribute] + : AudioStream.attributeTypeMap.find((attr) => attr.name === attribute) + ?.defaultValue + ) as T; + }; + this["location"] = assign("location"); + this["actionUrl"] = assign("actionUrl"); + this["contentType"] = assign("contentType"); + this["metaData"] = assign>("metaData"); + this["privacyMode"] = assign("privacyMode"); + } +} diff --git a/models/AudioStreamWebhook.ts b/models/AudioStreamWebhook.ts new file mode 100644 index 0000000..e1f432b --- /dev/null +++ b/models/AudioStreamWebhook.ts @@ -0,0 +1,178 @@ +/** + * FreeClimb API + * FreeClimb is a cloud-based application programming interface (API) that puts the power of the Vail platform in your hands. FreeClimb simplifies the process of creating applications that can use a full range of telephony features without requiring specialized or on-site telephony equipment. Using the FreeClimb REST API to write applications is easy! You have the option to use the language of your choice or hit the API directly. Your application can execute a command by issuing a RESTful request to the FreeClimb API. The base URL to send HTTP requests to the FreeClimb REST API is: /apiserver. FreeClimb authenticates and processes your request. + * + * OpenAPI spec version: 1.0.0 + * Contact: support@freeclimb.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { CallDirection } from "./../models/CallDirection"; +import { CallStatus } from "./../models/CallStatus"; +import { Webhook } from "./../models/Webhook"; +import { HttpFile } from "../http/http"; + +/** + * A gRPC session has ended for this Call its actionUrl is being invoked. A PerCL response is expected — unless the URL is invoked due to the participant hanging up. + */ + +interface AttributeType { + name: string; + baseName: string; + type: string; + format: string; + defaultValue: any; +} +interface ArgumentsType { + requestType?: string; + callId?: string; + accountId?: string; + from?: string; + to?: string; + callStatus?: CallStatus; + direction?: CallDirection; + conferenceId?: string; + queueId?: string; +} +export class AudioStreamWebhook extends Webhook { + /** + * Context or reason why this request is being made. Will be audioStream - gRPC session for this Call has ended and its actionUrl is being invoked. + */ + "requestType"?: string; + /** + * Unique ID for this Call, generated by FreeClimb. This is the call leg which ended its gRPC session. + */ + "callId"?: string; + /** + * Account ID associated with your account. + */ + "accountId"?: string; + /** + * Phone number of the party that initiated the Call (in E.164 format). + */ + "from"?: string; + /** + * Phone number provisioned to you and to which this Call is directed (in E.164 format). + */ + "to"?: string; + "callStatus"?: CallStatus; + "direction"?: CallDirection; + /** + * This is only populated if request pertains to a Conference. Otherwise, it is set to null. + */ + "conferenceId"?: string; + /** + * This is only populated if the request pertains to a Queue. Otherwise, it is set to null. + */ + "queueId"?: string; + + static readonly discriminator: string | undefined = "requestType"; + + static readonly attributeTypeMap: AttributeType[] = [ + { + name: "requestType", + baseName: "requestType", + type: "string", + format: "", + + defaultValue: undefined, + }, + { + name: "callId", + baseName: "callId", + type: "string", + format: "", + + defaultValue: undefined, + }, + { + name: "accountId", + baseName: "accountId", + type: "string", + format: "", + + defaultValue: undefined, + }, + { + name: "from", + baseName: "from", + type: "string", + format: "", + + defaultValue: undefined, + }, + { + name: "to", + baseName: "to", + type: "string", + format: "", + + defaultValue: undefined, + }, + { + name: "callStatus", + baseName: "callStatus", + type: "CallStatus", + format: "", + + defaultValue: undefined, + }, + { + name: "direction", + baseName: "direction", + type: "CallDirection", + format: "", + + defaultValue: undefined, + }, + { + name: "conferenceId", + baseName: "conferenceId", + type: "string", + format: "", + + defaultValue: undefined, + }, + { + name: "queueId", + baseName: "queueId", + type: "string", + format: "", + + defaultValue: undefined, + }, + ]; + + static getAttributeTypeMap(): AttributeType[] { + return super + .getAttributeTypeMap() + .concat(AudioStreamWebhook.attributeTypeMap); + } + public constructor(args: ArgumentsType) { + super({ requestType: "audioStream" }); + const assign = (attribute: keyof ArgumentsType): T => { + return ( + args.hasOwnProperty(attribute) + ? args[attribute] + : AudioStreamWebhook.attributeTypeMap.find( + (attr) => attr.name === attribute, + )?.defaultValue + ) as T; + }; + this["requestType"] = assign("requestType"); + this["callId"] = assign("callId"); + this["accountId"] = assign("accountId"); + this["from"] = assign("from"); + this["to"] = assign("to"); + this["callStatus"] = assign("callStatus"); + this["direction"] = assign("direction"); + this["conferenceId"] = assign("conferenceId"); + this["queueId"] = assign("queueId"); + } + public static deserialize(payload: string): AudioStreamWebhook { + return new AudioStreamWebhook(JSON.parse(payload)); + } +} diff --git a/models/AvailableNumber.ts b/models/AvailableNumber.ts index 23d7468..e861aeb 100644 --- a/models/AvailableNumber.ts +++ b/models/AvailableNumber.ts @@ -24,6 +24,7 @@ interface ArgumentsType { capabilities?: Capabilities; campaignId?: string; phoneNumber?: string; + alias?: string; region?: string; country?: string; } @@ -37,6 +38,10 @@ export class AvailableNumber { * The phone number, in E.164 format (+ country code and phone number: +18003608245). */ "phoneNumber"?: string; + /** + * A nicely-formatted version of the phone number. + */ + "alias"?: string; /** * The state or province of this phone number. */ @@ -73,6 +78,14 @@ export class AvailableNumber { defaultValue: undefined, }, + { + name: "alias", + baseName: "alias", + type: "string", + format: "", + + defaultValue: undefined, + }, { name: "region", baseName: "region", @@ -107,6 +120,7 @@ export class AvailableNumber { this["capabilities"] = assign("capabilities"); this["campaignId"] = assign("campaignId"); this["phoneNumber"] = assign("phoneNumber"); + this["alias"] = assign("alias"); this["region"] = assign("region"); this["country"] = assign("country"); } diff --git a/models/CallResult.ts b/models/CallResult.ts index a269100..e486752 100644 --- a/models/CallResult.ts +++ b/models/CallResult.ts @@ -12,6 +12,7 @@ import { AnsweredBy } from "./../models/AnsweredBy"; import { CallDirection } from "./../models/CallDirection"; +import { CallResultAllOfSubresourceUris } from "./../models/CallResultAllOfSubresourceUris"; import { CallStatus } from "./../models/CallStatus"; import { HttpFile } from "../http/http"; @@ -27,6 +28,8 @@ interface ArgumentsType { dateCreated?: string; dateUpdated?: string; revision?: number; + dateCreatedISO?: Date; + dateUpdatedISO?: Date; callId?: string; parentCallId?: string; accountId?: string; @@ -35,13 +38,19 @@ interface ArgumentsType { phoneNumberId?: string; status?: CallStatus; startTime?: string; + startTimeISO?: Date; connectTime?: string; + connectTimeISO?: Date; endTime?: string; + endTimeISO?: Date; duration?: number; connectDuration?: number; + audioStreamDuration?: number; direction?: CallDirection; answeredBy?: AnsweredBy; - subresourceUris?: any; + callerName?: string; + webRTC?: boolean; + subresourceUris?: CallResultAllOfSubresourceUris; applicationId?: string; } export class CallResult { @@ -61,6 +70,14 @@ export class CallResult { * Revision count for the resource. This count is set to 1 on creation and is incremented every time it is updated. */ "revision"?: number; + /** + * The date that this resource was created in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). + */ + "dateCreatedISO"?: Date; + /** + * The date that this resource was last updated in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). + */ + "dateUpdatedISO"?: Date; /** * String that uniquely identifies this Call resource. */ @@ -90,14 +107,26 @@ export class CallResult { * Start time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed. */ "startTime"?: string; + /** + * Start time of the Call in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call has not yet been dialed. + */ + "startTimeISO"?: Date; /** * Time the Call was answered (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed. */ "connectTime"?: string; + /** + * Time the Call was answered in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call has not yet been dialed. + */ + "connectTimeISO"?: Date; /** * End time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call did not complete successfully. */ "endTime"?: string; + /** + * End time of the Call in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call did not complete successfully. + */ + "endTimeISO"?: Date; /** * Total length of the Call in seconds. Measures time between startTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls. */ @@ -106,12 +135,21 @@ export class CallResult { * Length of time that the Call was connected in seconds. Measures time between connectTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls. */ "connectDuration"?: number; + /** + * Length of time that the Call used the audio stream in seconds. This value is empty or zero when the Call did not use the audio stream. + */ + "audioStreamDuration"?: number; "direction"?: CallDirection; "answeredBy"?: AnsweredBy; /** - * The list of subresources for this Call. These include things like logs and recordings associated with the Call. + * The caller ID name (CNAM) for this Call. Empty if unavailable. + */ + "callerName"?: string; + /** + * Indicates whether this Call was initiated via WebRTC. */ - "subresourceUris"?: any; + "webRTC"?: boolean; + "subresourceUris"?: CallResultAllOfSubresourceUris; /** * ApplicationId associated with the Call. */ @@ -152,6 +190,22 @@ export class CallResult { defaultValue: undefined, }, + { + name: "dateCreatedISO", + baseName: "dateCreatedISO", + type: "Date", + format: "date-time", + + defaultValue: undefined, + }, + { + name: "dateUpdatedISO", + baseName: "dateUpdatedISO", + type: "Date", + format: "date-time", + + defaultValue: undefined, + }, { name: "callId", baseName: "callId", @@ -216,6 +270,14 @@ export class CallResult { defaultValue: undefined, }, + { + name: "startTimeISO", + baseName: "startTimeISO", + type: "Date", + format: "date-time", + + defaultValue: undefined, + }, { name: "connectTime", baseName: "connectTime", @@ -224,6 +286,14 @@ export class CallResult { defaultValue: undefined, }, + { + name: "connectTimeISO", + baseName: "connectTimeISO", + type: "Date", + format: "date-time", + + defaultValue: undefined, + }, { name: "endTime", baseName: "endTime", @@ -232,6 +302,14 @@ export class CallResult { defaultValue: undefined, }, + { + name: "endTimeISO", + baseName: "endTimeISO", + type: "Date", + format: "date-time", + + defaultValue: undefined, + }, { name: "duration", baseName: "duration", @@ -248,6 +326,14 @@ export class CallResult { defaultValue: undefined, }, + { + name: "audioStreamDuration", + baseName: "audioStreamDuration", + type: "number", + format: "", + + defaultValue: undefined, + }, { name: "direction", baseName: "direction", @@ -264,10 +350,26 @@ export class CallResult { defaultValue: undefined, }, + { + name: "callerName", + baseName: "callerName", + type: "string", + format: "", + + defaultValue: undefined, + }, + { + name: "webRTC", + baseName: "webRTC", + type: "boolean", + format: "", + + defaultValue: undefined, + }, { name: "subresourceUris", baseName: "subresourceUris", - type: "any", + type: "CallResultAllOfSubresourceUris", format: "", defaultValue: undefined, @@ -298,6 +400,8 @@ export class CallResult { this["dateCreated"] = assign("dateCreated"); this["dateUpdated"] = assign("dateUpdated"); this["revision"] = assign("revision"); + this["dateCreatedISO"] = assign("dateCreatedISO"); + this["dateUpdatedISO"] = assign("dateUpdatedISO"); this["callId"] = assign("callId"); this["parentCallId"] = assign("parentCallId"); this["accountId"] = assign("accountId"); @@ -306,13 +410,20 @@ export class CallResult { this["phoneNumberId"] = assign("phoneNumberId"); this["status"] = assign("status"); this["startTime"] = assign("startTime"); + this["startTimeISO"] = assign("startTimeISO"); this["connectTime"] = assign("connectTime"); + this["connectTimeISO"] = assign("connectTimeISO"); this["endTime"] = assign("endTime"); + this["endTimeISO"] = assign("endTimeISO"); this["duration"] = assign("duration"); this["connectDuration"] = assign("connectDuration"); + this["audioStreamDuration"] = assign("audioStreamDuration"); this["direction"] = assign("direction"); this["answeredBy"] = assign("answeredBy"); - this["subresourceUris"] = assign("subresourceUris"); + this["callerName"] = assign("callerName"); + this["webRTC"] = assign("webRTC"); + this["subresourceUris"] = + assign("subresourceUris"); this["applicationId"] = assign("applicationId"); } } diff --git a/models/CallResultAllOfSubresourceUris.ts b/models/CallResultAllOfSubresourceUris.ts new file mode 100644 index 0000000..ea7e0d2 --- /dev/null +++ b/models/CallResultAllOfSubresourceUris.ts @@ -0,0 +1,77 @@ +/** + * FreeClimb API + * FreeClimb is a cloud-based application programming interface (API) that puts the power of the Vail platform in your hands. FreeClimb simplifies the process of creating applications that can use a full range of telephony features without requiring specialized or on-site telephony equipment. Using the FreeClimb REST API to write applications is easy! You have the option to use the language of your choice or hit the API directly. Your application can execute a command by issuing a RESTful request to the FreeClimb API. The base URL to send HTTP requests to the FreeClimb REST API is: /apiserver. FreeClimb authenticates and processes your request. + * + * OpenAPI spec version: 1.0.0 + * Contact: support@freeclimb.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { HttpFile } from "../http/http"; + +/** + * The list of subresources for this Call. These include things like logs and recordings associated with the Call. + */ + +interface AttributeType { + name: string; + baseName: string; + type: string; + format: string; + defaultValue: any; +} +interface ArgumentsType { + logs?: string; + recordings?: string; +} +export class CallResultAllOfSubresourceUris { + /** + * The URI for the logs associated with this Call. + */ + "logs"?: string; + /** + * The URI for the recordings associated with this Call. + */ + "recordings"?: string; + + static readonly discriminator: string | undefined = undefined; + + static readonly attributeTypeMap: AttributeType[] = [ + { + name: "logs", + baseName: "logs", + type: "string", + format: "", + + defaultValue: undefined, + }, + { + name: "recordings", + baseName: "recordings", + type: "string", + format: "", + + defaultValue: undefined, + }, + ]; + + static getAttributeTypeMap(): AttributeType[] { + return CallResultAllOfSubresourceUris.attributeTypeMap; + } + public constructor(args: ArgumentsType) { + const assign = (attribute: keyof ArgumentsType): T => { + return ( + args.hasOwnProperty(attribute) + ? args[attribute] + : CallResultAllOfSubresourceUris.attributeTypeMap.find( + (attr) => attr.name === attribute, + )?.defaultValue + ) as T; + }; + this["logs"] = assign("logs"); + this["recordings"] = assign("recordings"); + } +} diff --git a/models/ConferenceResult.ts b/models/ConferenceResult.ts index 3338d2b..3b83c34 100644 --- a/models/ConferenceResult.ts +++ b/models/ConferenceResult.ts @@ -66,6 +66,9 @@ export class ConferenceResult { * A description for this Conference. */ "alias"?: string; + /** + * Setting that controls when a beep is played. One of: always, never, entryOnly, exitOnly. Defaults to always. + */ "playBeep"?: PlayBeep; /** * Flag indicating whether recording is enabled for this Conference. diff --git a/models/ObjectSerializer.ts b/models/ObjectSerializer.ts index 10d88d0..443e70e 100644 --- a/models/ObjectSerializer.ts +++ b/models/ObjectSerializer.ts @@ -9,6 +9,8 @@ export * from "./AnsweredBy"; export * from "./ApplicationList"; export * from "./ApplicationRequest"; export * from "./ApplicationResult"; +export * from "./AudioStream"; +export * from "./AudioStreamWebhook"; export * from "./AvailableNumber"; export * from "./AvailableNumberList"; export * from "./BargeInReason"; @@ -20,6 +22,7 @@ export * from "./CallDirection"; export * from "./CallEndedReason"; export * from "./CallList"; export * from "./CallResult"; +export * from "./CallResultAllOfSubresourceUris"; export * from "./CallStatus"; export * from "./CallStatusWebhook"; export * from "./Capabilities"; @@ -166,6 +169,8 @@ import { AnsweredBy } from "./AnsweredBy"; import { ApplicationList } from "./ApplicationList"; import { ApplicationRequest } from "./ApplicationRequest"; import { ApplicationResult } from "./ApplicationResult"; +import { AudioStream } from "./AudioStream"; +import { AudioStreamWebhook } from "./AudioStreamWebhook"; import { AvailableNumber } from "./AvailableNumber"; import { AvailableNumberList } from "./AvailableNumberList"; import { BargeInReason } from "./BargeInReason"; @@ -177,6 +182,7 @@ import { CallDirection } from "./CallDirection"; import { CallEndedReason } from "./CallEndedReason"; import { CallList } from "./CallList"; import { CallResult } from "./CallResult"; +import { CallResultAllOfSubresourceUris } from "./CallResultAllOfSubresourceUris"; import { CallStatus } from "./CallStatus"; import { CallStatusWebhook } from "./CallStatusWebhook"; import { Capabilities } from "./Capabilities"; @@ -381,6 +387,8 @@ let typeMap: { [index: string]: any } = { ApplicationList: ApplicationList, ApplicationRequest: ApplicationRequest, ApplicationResult: ApplicationResult, + AudioStream: AudioStream, + AudioStreamWebhook: AudioStreamWebhook, AvailableNumber: AvailableNumber, AvailableNumberList: AvailableNumberList, BlobListResponse: BlobListResponse, @@ -389,6 +397,7 @@ let typeMap: { [index: string]: any } = { CallControlWebhook: CallControlWebhook, CallList: CallList, CallResult: CallResult, + CallResultAllOfSubresourceUris: CallResultAllOfSubresourceUris, CallStatusWebhook: CallStatusWebhook, Capabilities: Capabilities, CompletionRequest: CompletionRequest, diff --git a/models/QueueResult.ts b/models/QueueResult.ts index 42ea5f9..ed4f867 100644 --- a/models/QueueResult.ts +++ b/models/QueueResult.ts @@ -30,6 +30,7 @@ interface ArgumentsType { maxSize?: number; currentSize?: number; averageQueueRemovalTime?: number; + averageWaitTime?: number; subresourceUris?: any; } export class QueueResult { @@ -73,6 +74,10 @@ export class QueueResult { * The average amount of time (in seconds) for a call to be removed from the queue. */ "averageQueueRemovalTime"?: number; + /** + * The average wait time (in seconds) of all Calls in the Queue. + */ + "averageWaitTime"?: number; /** * List of subresources for this Queue (which includes Queue members). */ @@ -161,6 +166,14 @@ export class QueueResult { defaultValue: undefined, }, + { + name: "averageWaitTime", + baseName: "averageWaitTime", + type: "number", + format: "", + + defaultValue: undefined, + }, { name: "subresourceUris", baseName: "subresourceUris", @@ -193,6 +206,7 @@ export class QueueResult { this["maxSize"] = assign("maxSize"); this["currentSize"] = assign("currentSize"); this["averageQueueRemovalTime"] = assign("averageQueueRemovalTime"); + this["averageWaitTime"] = assign("averageWaitTime"); this["subresourceUris"] = assign("subresourceUris"); } } diff --git a/models/RequestType.ts b/models/RequestType.ts index ce515fe..849b776 100644 --- a/models/RequestType.ts +++ b/models/RequestType.ts @@ -26,6 +26,7 @@ export enum RequestType { DEQUEUE = "dequeue", QUEUE_WAIT = "queueWait", ADD_TO_QUEUE_NOTIFICATION = "addToQueueNotification", + AUDIO_STREAM = "audioStream", REMOVE_FROM_QUEUE_NOTIFICATION = "removeFromQueueNotification", CALL_STATUS = "callStatus", CREATE_CONFERENCE = "createConference", diff --git a/models/all.ts b/models/all.ts index 6cae237..1396716 100644 --- a/models/all.ts +++ b/models/all.ts @@ -9,6 +9,8 @@ export * from "./AnsweredBy"; export * from "./ApplicationList"; export * from "./ApplicationRequest"; export * from "./ApplicationResult"; +export * from "./AudioStream"; +export * from "./AudioStreamWebhook"; export * from "./AvailableNumber"; export * from "./AvailableNumberList"; export * from "./BargeInReason"; @@ -20,6 +22,7 @@ export * from "./CallDirection"; export * from "./CallEndedReason"; export * from "./CallList"; export * from "./CallResult"; +export * from "./CallResultAllOfSubresourceUris"; export * from "./CallStatus"; export * from "./CallStatusWebhook"; export * from "./Capabilities"; diff --git a/openapi.json b/openapi.json index d89e37c..3f2a4fc 100644 --- a/openapi.json +++ b/openapi.json @@ -320,6 +320,7 @@ "dequeue", "queueWait", "addToQueueNotification", + "audioStream", "removeFromQueueNotification", "callStatus", "createConference", @@ -460,6 +461,7 @@ "propertyName": "command", "mapping": { "AddToConference": "#/components/schemas/AddToConference", + "AudioStream": "#/components/schemas/AudioStream", "CreateConference": "#/components/schemas/CreateConference", "Dequeue": "#/components/schemas/Dequeue", "Enqueue": "#/components/schemas/Enqueue", @@ -501,6 +503,7 @@ "mapping": { "addToConferenceNotification": "#/components/schemas/AddToConferenceNotificationWebhook", "addToQueueNotification": "#/components/schemas/AddToQueueNotificationWebhook", + "audioStream": "#/components/schemas/AudioStreamWebhook", "callControl": "#/components/schemas/CallControlWebhook", "callStatus": "#/components/schemas/CallStatusWebhook", "conferenceRecordingStatus": "#/components/schemas/ConferenceRecordingStatusWebhook", @@ -643,6 +646,55 @@ } ] }, + "AudioStreamWebhook": { + "description": "A gRPC session has ended for this Call its actionUrl is being invoked. A PerCL response is expected — unless the URL is invoked due to the participant hanging up.", + "allOf": [ + { + "$ref": "#/components/schemas/Webhook" + }, + { + "type": "object", + "properties": { + "requestType": { + "type": "string", + "description": "Context or reason why this request is being made. Will be audioStream - gRPC session for this Call has ended and its actionUrl is being invoked." + }, + "callId": { + "type": "string", + "description": "Unique ID for this Call, generated by FreeClimb. This is the call leg which ended its gRPC session." + }, + "accountId": { + "type": "string", + "description": "Account ID associated with your account." + }, + "from": { + "type": "string", + "description": "Phone number of the party that initiated the Call (in E.164 format)." + }, + "to": { + "type": "string", + "description": "Phone number provisioned to you and to which this Call is directed (in E.164 format)." + }, + "callStatus": { + "$ref": "#/components/schemas/CallStatus" + }, + "direction": { + "$ref": "#/components/schemas/CallDirection" + }, + "conferenceId": { + "type": "string", + "description": "This is only populated if request pertains to a Conference. Otherwise, it is set to null.", + "nullable": true + }, + "queueId": { + "type": "string", + "description": "This is only populated if the request pertains to a Queue. Otherwise, it is set to null.", + "nullable": true + } + } + } + ] + }, "CallControlWebhook": { "description": "The digit sequence defined in the callControlSequence attribute of the AddToConference PerCL command has been entered by the Conference participant. A PerCL response is expected. If invalid PerCL is provided, the call leg which triggered this webhook will terminate.", "allOf": [ @@ -1964,6 +2016,45 @@ } ] }, + "AudioStream": { + "description": "The `AudioStream` command transfers control of the call to a gRPC session. Upon completion of the gRPC session, if the actionUrl is specified, control can be returned to percl usage or the call will simply be hung up if the actionUrl is not specified.", + "allOf": [ + { + "$ref": "#/components/schemas/PerclCommand" + }, + { + "type": "object", + "required": ["location"], + "properties": { + "location": { + "description": "The gRPC server location that will receive the grpc stream as a uri and must be port 80 or 443.", + "type": "string", + "format": "uri" + }, + "actionUrl": { + "description": "A request is made to this URL when the gRPC session is concluded. The PerCL script returned in response to the actionUrl will be executed on the call.", + "type": "string", + "format": "uri" + }, + "contentType": { + "description": "The type and sample rate of the audio being received over the channel must match the environmental sample rate.", + "type": "string" + }, + "metaData": { + "description": "An arbitrary array of strings passed through FC to the GRPC server can be used to pass state or other information about the call.", + "type": "array", + "items": { + "type": "string" + } + }, + "privacyMode": { + "description": "Enables audio redaction with full call recording while gRPC session is running and blocks logging of any DTMFs received by FreeClimb.", + "type": "boolean" + } + } + } + ] + }, "CreateConference": { "description": "The `CreateConference` command does exactly what its name implies — it creates an unpopulated Conference (one without any Participants). Once created, a Conference remains in FreeClimb until explicitly terminated by a customer. Once a Conference has been terminated, it can no longer be used.", "allOf": [ @@ -2935,6 +3026,11 @@ "description": "The phone number, in E.164 format (+ country code and phone number: +18003608245).", "nullable": true }, + "alias": { + "type": "string", + "description": "A nicely-formatted version of the phone number.", + "nullable": true + }, "voiceEnabled": { "type": "boolean", "description": "Typically set to true for all numbers.", @@ -3047,7 +3143,7 @@ "nullable": true }, "tfn": { - "$ref": "#/components/schemas/TFN", + "allOf": [{ "$ref": "#/components/schemas/TFN" }], "nullable": true } } @@ -3109,6 +3205,21 @@ } } }, + "CallResultAllOfSubresourceUris": { + "type": "object", + "description": "The list of subresources for this Call. These include things like logs and recordings associated with the Call.", + "nullable": true, + "properties": { + "logs": { + "type": "string", + "description": "The URI for the logs associated with this Call." + }, + "recordings": { + "type": "string", + "description": "The URI for the recordings associated with this Call." + } + } + }, "CallResult": { "allOf": [ { @@ -3117,6 +3228,18 @@ { "type": "object", "properties": { + "dateCreatedISO": { + "type": "string", + "format": "date-time", + "description": "The date that this resource was created in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z).", + "nullable": true + }, + "dateUpdatedISO": { + "type": "string", + "format": "date-time", + "description": "The date that this resource was last updated in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z).", + "nullable": true + }, "callId": { "type": "string", "description": "String that uniquely identifies this Call resource.", @@ -3155,16 +3278,34 @@ "description": "Start time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed.", "nullable": true }, + "startTimeISO": { + "type": "string", + "format": "date-time", + "description": "Start time of the Call in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call has not yet been dialed.", + "nullable": true + }, "connectTime": { "type": "string", "description": "Time the Call was answered (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed.", "nullable": true }, + "connectTimeISO": { + "type": "string", + "format": "date-time", + "description": "Time the Call was answered in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call has not yet been dialed.", + "nullable": true + }, "endTime": { "type": "string", "description": "End time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call did not complete successfully.", "nullable": true }, + "endTimeISO": { + "type": "string", + "format": "date-time", + "description": "End time of the Call in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call did not complete successfully.", + "nullable": true + }, "duration": { "type": "integer", "description": "Total length of the Call in seconds. Measures time between startTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls.", @@ -3175,17 +3316,30 @@ "description": "Length of time that the Call was connected in seconds. Measures time between connectTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls.", "nullable": true }, + "audioStreamDuration": { + "type": "integer", + "description": "Length of time that the Call used the audio stream in seconds. This value is empty or zero when the Call did not use the audio stream.", + "nullable": true + }, "direction": { "$ref": "#/components/schemas/CallDirection" }, "answeredBy": { "$ref": "#/components/schemas/AnsweredBy" }, - "subresourceUris": { - "type": "object", - "description": "The list of subresources for this Call. These include things like logs and recordings associated with the Call.", + "callerName": { + "type": "string", + "description": "The caller ID name (CNAM) for this Call. Empty if unavailable.", "nullable": true }, + "webRTC": { + "type": "boolean", + "description": "Indicates whether this Call was initiated via WebRTC.", + "nullable": true + }, + "subresourceUris": { + "$ref": "#/components/schemas/CallResultAllOfSubresourceUris" + }, "applicationId": { "type": "string", "description": "ApplicationId associated with the Call.", @@ -3410,7 +3564,7 @@ "nullable": true }, "playBeep": { - "$ref": "#/components/schemas/PlayBeep", + "allOf": [{ "$ref": "#/components/schemas/PlayBeep" }], "description": "Setting that controls when a beep is played. One of: always, never, entryOnly, exitOnly. Defaults to always." }, "record": { @@ -3622,7 +3776,7 @@ "nullable": true }, "tfn": { - "$ref": "#/components/schemas/TFN", + "allOf": [{ "$ref": "#/components/schemas/TFN" }], "nullable": true }, "phoneNumberId": { @@ -3853,6 +4007,11 @@ "description": "The average amount of time (in seconds) for a call to be removed from the queue.", "nullable": true }, + "averageWaitTime": { + "type": "integer", + "description": "The average wait time (in seconds) of all Calls in the Queue.", + "nullable": true + }, "subresourceUris": { "type": "object", "description": "List of subresources for this Queue (which includes Queue members).", @@ -6003,6 +6162,16 @@ "summary": "List Calls", "operationId": "list-calls", "parameters": [ + { + "name": "usedAudioStream", + "in": "query", + "description": "If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned ", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, { "name": "active", "in": "query", @@ -6102,6 +6271,16 @@ "schema": { "type": "integer" } + }, + { + "name": "webRTC", + "in": "query", + "description": "Only show Calls that were originated via WebRTC.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } } ], "deprecated": false, @@ -6145,6 +6324,24 @@ "schema": { "type": "string" } + }, + { + "name": "startTime", + "in": "query", + "description": "Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "endTime", + "in": "query", + "description": "Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.", + "required": false, + "schema": { + "type": "string" + } } ], "deprecated": false, @@ -6619,6 +6816,24 @@ "schema": { "type": "string" } + }, + { + "name": "startTime", + "in": "query", + "description": "Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "endTime", + "in": "query", + "description": "Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -6766,7 +6981,7 @@ }, "deprecated": false, "responses": { - "200": { + "201": { "description": "Successfuly created queue", "content": { "application/json": { @@ -7057,6 +7272,24 @@ }, { "$ref": "#/components/parameters/AccountId" + }, + { + "name": "startTime", + "in": "query", + "description": "Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "endTime", + "in": "query", + "description": "Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { diff --git a/package.json b/package.json index 2442c0a..e520f84 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@freeclimb/sdk", - "version": "4.3.0", + "version": "4.4.0", "description": "OpenAPI client for @freeclimb/sdk", "author": "OpenAPI-Generator Contributors", "keywords": [ @@ -34,13 +34,13 @@ "btoa": "^1.2.1", "crypto": "^1.0.1", "es6-promise": "^4.2.4", - "fast-xml-parser": "^4.5.0", + "fast-xml-parser": "^5.3.8", "form-data": "^2.5.0", "json5": "^2.2.3", "jsonpath-plus": "^10.3.0", "moment": "^2.29.4", "node-fetch": "^2.6.0", - "qs": "^6.11.1", + "qs": "^6.14.2", "reflect-metadata": "^0.1.13", "url-parse": "^1.4.3" }, @@ -51,7 +51,7 @@ "@types/qs": "^6.9.7", "jest": "^29.0.0", "prettier": "^3.4.2", - "ts-jest": "^29.0.2", + "ts-jest": "^29.4.0", "typescript": "^4.8.3" }, "resolutions": { diff --git a/types/ObjectParamAPI.ts b/types/ObjectParamAPI.ts index e81df53..27a34ac 100644 --- a/types/ObjectParamAPI.ts +++ b/types/ObjectParamAPI.ts @@ -13,6 +13,8 @@ import { AnsweredBy } from "../models/AnsweredBy"; import { ApplicationList } from "../models/ApplicationList"; import { ApplicationRequest } from "../models/ApplicationRequest"; import { ApplicationResult } from "../models/ApplicationResult"; +import { AudioStream } from "../models/AudioStream"; +import { AudioStreamWebhook } from "../models/AudioStreamWebhook"; import { AvailableNumber } from "../models/AvailableNumber"; import { AvailableNumberList } from "../models/AvailableNumberList"; import { BargeInReason } from "../models/BargeInReason"; @@ -24,6 +26,7 @@ import { CallDirection } from "../models/CallDirection"; import { CallEndedReason } from "../models/CallEndedReason"; import { CallList } from "../models/CallList"; import { CallResult } from "../models/CallResult"; +import { CallResultAllOfSubresourceUris } from "../models/CallResultAllOfSubresourceUris"; import { CallStatus } from "../models/CallStatus"; import { CallStatusWebhook } from "../models/CallStatusWebhook"; import { Capabilities } from "../models/Capabilities"; @@ -631,9 +634,30 @@ export interface DefaultApiListCallRecordingsRequest { * @memberof DefaultApilistCallRecordings */ dateCreated?: string; + + /** + * Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + * @type string + * @memberof DefaultApilistCallRecordings + */ + startTime?: string; + + /** + * Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. + * @type string + * @memberof DefaultApilistCallRecordings + */ + endTime?: string; } export interface DefaultApiListCallsRequest { + /** + * If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned + * @type boolean + * @memberof DefaultApilistCalls + */ + usedAudioStream?: boolean; + /** * If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. * @type boolean @@ -703,6 +727,13 @@ export interface DefaultApiListCallsRequest { * @memberof DefaultApilistCalls */ riskScoreMax?: number; + + /** + * Only show Calls that were originated via WebRTC. + * @type boolean + * @memberof DefaultApilistCalls + */ + webRTC?: boolean; } export interface DefaultApiListConferenceRecordingsRequest { @@ -726,6 +757,20 @@ export interface DefaultApiListConferenceRecordingsRequest { * @memberof DefaultApilistConferenceRecordings */ dateCreated?: string; + + /** + * Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + * @type string + * @memberof DefaultApilistConferenceRecordings + */ + startTime?: string; + + /** + * Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. + * @type string + * @memberof DefaultApilistConferenceRecordings + */ + endTime?: string; } export interface DefaultApiListConferencesRequest { @@ -934,6 +979,20 @@ export interface DefaultApiListRecordingsRequest { * @memberof DefaultApilistRecordings */ dateCreated?: string; + + /** + * Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + * @type string + * @memberof DefaultApilistRecordings + */ + startTime?: string; + + /** + * Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. + * @type string + * @memberof DefaultApilistRecordings + */ + endTime?: string; } export interface DefaultApiListSmsMessagesRequest { @@ -1748,7 +1807,13 @@ export class ObjectDefaultApi { options?: Configuration, ): Promise { return this.api - .listCallRecordings(param.callId, param.dateCreated, options) + .listCallRecordings( + param.callId, + param.dateCreated, + param.startTime, + param.endTime, + options, + ) .toPromise(); } @@ -1762,6 +1827,7 @@ export class ObjectDefaultApi { ): Promise { return this.api .listCalls( + param.usedAudioStream, param.active, param.to, param._from, @@ -1772,6 +1838,7 @@ export class ObjectDefaultApi { param.applicationId, param.riskScoreMin, param.riskScoreMax, + param.webRTC, options, ) .toPromise(); @@ -1790,6 +1857,8 @@ export class ObjectDefaultApi { param.conferenceId, param.callId, param.dateCreated, + param.startTime, + param.endTime, options, ) .toPromise(); @@ -1899,6 +1968,8 @@ export class ObjectDefaultApi { param.callId, param.conferenceId, param.dateCreated, + param.startTime, + param.endTime, options, ) .toPromise(); diff --git a/types/ObservableAPI.ts b/types/ObservableAPI.ts index 30e205f..0a2f12d 100644 --- a/types/ObservableAPI.ts +++ b/types/ObservableAPI.ts @@ -14,6 +14,8 @@ import { AnsweredBy } from "../models/AnsweredBy"; import { ApplicationList } from "../models/ApplicationList"; import { ApplicationRequest } from "../models/ApplicationRequest"; import { ApplicationResult } from "../models/ApplicationResult"; +import { AudioStream } from "../models/AudioStream"; +import { AudioStreamWebhook } from "../models/AudioStreamWebhook"; import { AvailableNumber } from "../models/AvailableNumber"; import { AvailableNumberList } from "../models/AvailableNumberList"; import { BargeInReason } from "../models/BargeInReason"; @@ -25,6 +27,7 @@ import { CallDirection } from "../models/CallDirection"; import { CallEndedReason } from "../models/CallEndedReason"; import { CallList } from "../models/CallList"; import { CallResult } from "../models/CallResult"; +import { CallResultAllOfSubresourceUris } from "../models/CallResultAllOfSubresourceUris"; import { CallStatus } from "../models/CallStatus"; import { CallStatusWebhook } from "../models/CallStatusWebhook"; import { Capabilities } from "../models/Capabilities"; @@ -2137,15 +2140,23 @@ export class ObservableDefaultApi { * @param dateCreated Only show recordings created on the specified date, in the form *YYYY-MM-DD*. + * @param startTime Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + + * @param endTime Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. + */ public listCallRecordings( callId: string, dateCreated?: string, + startTime?: string, + endTime?: string, _options?: Configuration, ): Observable { const requestContextPromise = this.requestFactory.listCallRecordings( callId, dateCreated, + startTime, + endTime, _options, ); @@ -2181,6 +2192,8 @@ export class ObservableDefaultApi { /** * List Calls + * @param usedAudioStream If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned + * @param active If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. * @param to Only show Calls to this phone number. @@ -2201,8 +2214,11 @@ export class ObservableDefaultApi { * @param riskScoreMax The maximum riskScore that should be included in the list. + * @param webRTC Only show Calls that were originated via WebRTC. + */ public listCalls( + usedAudioStream?: boolean, active?: boolean, to?: string, _from?: string, @@ -2213,9 +2229,11 @@ export class ObservableDefaultApi { applicationId?: Array, riskScoreMin?: number, riskScoreMax?: number, + webRTC?: boolean, _options?: Configuration, ): Observable { const requestContextPromise = this.requestFactory.listCalls( + usedAudioStream, active, to, _from, @@ -2226,6 +2244,7 @@ export class ObservableDefaultApi { applicationId, riskScoreMin, riskScoreMax, + webRTC, _options, ); @@ -2267,17 +2286,25 @@ export class ObservableDefaultApi { * @param dateCreated Only show Recordings created on this date, formatted as *YYYY-MM-DD*. + * @param startTime Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + + * @param endTime Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. + */ public listConferenceRecordings( conferenceId: string, callId?: string, dateCreated?: string, + startTime?: string, + endTime?: string, _options?: Configuration, ): Observable { const requestContextPromise = this.requestFactory.listConferenceRecordings( conferenceId, callId, dateCreated, + startTime, + endTime, _options, ); @@ -2619,17 +2646,25 @@ export class ObservableDefaultApi { * @param dateCreated Only show Recordings created on this date, formatted as *YYYY-MM-DD*. + * @param startTime Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + + * @param endTime Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. + */ public listRecordings( callId?: string, conferenceId?: string, dateCreated?: string, + startTime?: string, + endTime?: string, _options?: Configuration, ): Observable { const requestContextPromise = this.requestFactory.listRecordings( callId, conferenceId, dateCreated, + startTime, + endTime, _options, ); diff --git a/types/PromiseAPI.ts b/types/PromiseAPI.ts index 21c07c2..d89e690 100644 --- a/types/PromiseAPI.ts +++ b/types/PromiseAPI.ts @@ -13,6 +13,8 @@ import { AnsweredBy } from "../models/AnsweredBy"; import { ApplicationList } from "../models/ApplicationList"; import { ApplicationRequest } from "../models/ApplicationRequest"; import { ApplicationResult } from "../models/ApplicationResult"; +import { AudioStream } from "../models/AudioStream"; +import { AudioStreamWebhook } from "../models/AudioStreamWebhook"; import { AvailableNumber } from "../models/AvailableNumber"; import { AvailableNumberList } from "../models/AvailableNumberList"; import { BargeInReason } from "../models/BargeInReason"; @@ -24,6 +26,7 @@ import { CallDirection } from "../models/CallDirection"; import { CallEndedReason } from "../models/CallEndedReason"; import { CallList } from "../models/CallList"; import { CallResult } from "../models/CallResult"; +import { CallResultAllOfSubresourceUris } from "../models/CallResultAllOfSubresourceUris"; import { CallStatus } from "../models/CallStatus"; import { CallStatusWebhook } from "../models/CallStatusWebhook"; import { Capabilities } from "../models/Capabilities"; @@ -843,19 +846,33 @@ export class PromiseDefaultApi { * @param dateCreated Only show recordings created on the specified date, in the form *YYYY-MM-DD*. + * @param startTime Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + + * @param endTime Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. + */ public listCallRecordings( callId: string, dateCreated?: string, + startTime?: string, + endTime?: string, _options?: Configuration, ): Promise { - const result = this.api.listCallRecordings(callId, dateCreated, _options); + const result = this.api.listCallRecordings( + callId, + dateCreated, + startTime, + endTime, + _options, + ); return result.toPromise(); } /** * List Calls + * @param usedAudioStream If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned + * @param active If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. * @param to Only show Calls to this phone number. @@ -876,8 +893,11 @@ export class PromiseDefaultApi { * @param riskScoreMax The maximum riskScore that should be included in the list. + * @param webRTC Only show Calls that were originated via WebRTC. + */ public listCalls( + usedAudioStream?: boolean, active?: boolean, to?: string, _from?: string, @@ -888,9 +908,11 @@ export class PromiseDefaultApi { applicationId?: Array, riskScoreMin?: number, riskScoreMax?: number, + webRTC?: boolean, _options?: Configuration, ): Promise { const result = this.api.listCalls( + usedAudioStream, active, to, _from, @@ -901,6 +923,7 @@ export class PromiseDefaultApi { applicationId, riskScoreMin, riskScoreMax, + webRTC, _options, ); return result.toPromise(); @@ -915,17 +938,25 @@ export class PromiseDefaultApi { * @param dateCreated Only show Recordings created on this date, formatted as *YYYY-MM-DD*. + * @param startTime Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + + * @param endTime Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. + */ public listConferenceRecordings( conferenceId: string, callId?: string, dateCreated?: string, + startTime?: string, + endTime?: string, _options?: Configuration, ): Promise { const result = this.api.listConferenceRecordings( conferenceId, callId, dateCreated, + startTime, + endTime, _options, ); return result.toPromise(); @@ -1098,17 +1129,25 @@ export class PromiseDefaultApi { * @param dateCreated Only show Recordings created on this date, formatted as *YYYY-MM-DD*. + * @param startTime Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. + + * @param endTime Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. + */ public listRecordings( callId?: string, conferenceId?: string, dateCreated?: string, + startTime?: string, + endTime?: string, _options?: Configuration, ): Promise { const result = this.api.listRecordings( callId, conferenceId, dateCreated, + startTime, + endTime, _options, ); return result.toPromise(); diff --git a/yarn.lock b/yarn.lock index 9317af3..8bad620 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1610,11 +1610,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -async@^3.2.3: - version "3.2.6" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" - integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1735,13 +1730,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" - integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== - dependencies: - balanced-match "^1.0.0" - braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" @@ -1838,7 +1826,7 @@ chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2056,13 +2044,6 @@ dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -ejs@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" - electron-to-chromium@^1.5.173: version "1.5.179" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz#453d53f360014a2604d40ccd41c4ea0a6e31b99a" @@ -2198,13 +2179,26 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== -fast-xml-parser@^4.2.0, fast-xml-parser@^4.5.0: +fast-xml-builder@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz#a485d7e8381f1db983cf006f849d1066e2935241" + integrity sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ== + +fast-xml-parser@^4.2.0: version "4.5.3" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb" integrity sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig== dependencies: strnum "^1.1.1" +fast-xml-parser@^5.3.8: + version "5.4.2" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.4.2.tgz#7fc66463b59260b0c5fd57edf46148a418bde68b" + integrity sha512-pw/6pIl4k0CSpElPEJhDppLzaixDEuWui2CUQQBH/ECDf7+y6YwA4Gf7Tyb0Rfe4DIMuZipYj4AEL0nACKglvQ== + dependencies: + fast-xml-builder "^1.0.0" + strnum "^2.1.2" + fastestsmallesttextencoderdecoder@^1.0.22: version "1.0.22" resolved "https://registry.yarnpkg.com/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz#59b47e7b965f45258629cc6c127bf783281c5e93" @@ -2229,13 +2223,6 @@ file-type@3.9.0: resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - fill-range@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" @@ -2394,6 +2381,18 @@ graceful-fs@^4.1.2, graceful-fs@^4.2.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +handlebars@^4.7.8: + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + handler-agent@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/handler-agent/-/handler-agent-0.2.0.tgz#bb77cd70b60bd7073b5327a7c3dbaec9420165d4" @@ -2615,16 +2614,6 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jake@^10.8.5: - version "10.9.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" - integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - jest-changed-files@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" @@ -3233,26 +3222,19 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - minimist@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== -minimist@^1.2.6: +minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -3284,6 +3266,11 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + node-abort-controller@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" @@ -3570,10 +3557,10 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== -qs@^6.11.1: - version "6.14.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" - integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== +qs@^6.14.2: + version "6.15.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.0.tgz#db8fd5d1b1d2d6b5b33adaf87429805f1909e7b3" + integrity sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ== dependencies: side-channel "^1.1.0" @@ -3711,11 +3698,16 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.3, semver@^7.5.4, semver@^7.7.2: +semver@^7.5.3, semver@^7.5.4: version "7.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== +semver@^7.7.3: + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -3879,6 +3871,11 @@ strnum@^1.1.1: resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== +strnum@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.2.0.tgz#8b582b637e4621f62ff714493e0ce30846f903a6" + integrity sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -3931,18 +3928,18 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -ts-jest@^29.0.2: - version "29.4.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.0.tgz#bef0ee98d94c83670af7462a1617bf2367a83740" - integrity sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q== +ts-jest@^29.4.0: + version "29.4.6" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.6.tgz#51cb7c133f227396818b71297ad7409bb77106e9" + integrity sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA== dependencies: bs-logger "^0.2.6" - ejs "^3.1.10" fast-json-stable-stringify "^2.1.0" + handlebars "^4.7.8" json5 "^2.2.3" lodash.memoize "^4.1.2" make-error "^1.3.6" - semver "^7.7.2" + semver "^7.7.3" type-fest "^4.41.0" yargs-parser "^21.1.1" @@ -3979,6 +3976,11 @@ typescript@^4.8.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +uglify-js@^3.1.4: + version "3.19.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== + undici-types@~7.8.0: version "7.8.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" @@ -4119,6 +4121,11 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"