From 4aa5d5a6637bf996cd5543f1a14939502a455bb9 Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Wed, 4 Mar 2026 10:51:05 -0500 Subject: [PATCH 01/11] Resolve VCSWP-23999 --- README.md | 2 +- composer.json | 2 +- docs/Api/DefaultApi.md | 30 +++-- docs/Model/CallResult.md | 1 + lib/Api/DefaultApi.php | 216 ++++++++++++++++++++++++++++------ lib/Configuration.php | 4 +- lib/Model/CallResult.php | 41 +++++++ openapi.json | 72 +++++++++++- test/Api/DefaultApiTest.php | 60 ++++++++-- test/Model/CallResultTest.php | 10 ++ 10 files changed, 378 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 6f5e9d8..d4e2a16 100644 --- a/README.md +++ b/README.md @@ -374,6 +374,6 @@ support@freeclimb.com This PHP package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: - API version: `1.0.0` - - Package version: `5.3.0` + - Package version: `5.2.1` - Generator version: `7.9.0` - Build package: `org.openapitools.codegen.languages.PhpClientCodegen` diff --git a/composer.json b/composer.json index a6e6a27..39196ff 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "freeclimbapi/php-sdk", - "version": "5.3.0", + "version": "5.2.1", "description": "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.", "keywords": [ "openapitools", diff --git a/docs/Api/DefaultApi.md b/docs/Api/DefaultApi.md index 5a2af51..908d152 100644 --- a/docs/Api/DefaultApi.md +++ b/docs/Api/DefaultApi.md @@ -2732,7 +2732,7 @@ try { ## `listCallRecordings()` ```php -listCallRecordings($call_id, $date_created): \FreeClimb\Api\Model\RecordingList +listCallRecordings($call_id, $date_created, $start_time, $end_time): \FreeClimb\Api\Model\RecordingList ``` List Call Recordings @@ -2758,9 +2758,11 @@ $apiInstance = new FreeClimb\Api\Api\DefaultApi( ); $call_id = 'call_id_example'; // string | String that uniquely identifies this call resource. $date_created = 'date_created_example'; // string | Only show recordings created on the specified date, in the form *YYYY-MM-DD*. +$start_time = 'start_time_example'; // string | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. +$end_time = 'end_time_example'; // string | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. try { - $result = $apiInstance->listCallRecordings($call_id, $date_created); + $result = $apiInstance->listCallRecordings($call_id, $date_created, $start_time, $end_time); print_r($result); } catch (Exception $e) { echo 'Exception when calling DefaultApi->listCallRecordings: ', $e->getMessage(), PHP_EOL; @@ -2773,6 +2775,8 @@ try { | ------------- | ------------- | ------------- | ------------- | | **call_id** | **string**| String that uniquely identifies this call resource. | | | **date_created** | **string**| Only show recordings created on the specified date, in the form *YYYY-MM-DD*. | [optional] | +| **start_time** | **string**| Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. | [optional] | +| **end_time** | **string**| Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. | [optional] | ### Return type @@ -2794,7 +2798,7 @@ try { ## `listCalls()` ```php -listCalls($active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max): \FreeClimb\Api\Model\CallList +listCalls($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max): \FreeClimb\Api\Model\CallList ``` List Calls @@ -2818,6 +2822,7 @@ $apiInstance = new FreeClimb\Api\Api\DefaultApi( new GuzzleHttp\Client(), $config ); +$used_audio_stream = false; // bool | If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned $active = false; // bool | If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. $to = 'to_example'; // string | Only show Calls to this phone number. $from = 'from_example'; // string | Only show Calls from this phone number. @@ -2830,7 +2835,7 @@ $risk_score_min = 56; // int | The minimum riskScore that should be included in $risk_score_max = 56; // int | The maximum riskScore that should be included in the list. try { - $result = $apiInstance->listCalls($active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max); + $result = $apiInstance->listCalls($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max); print_r($result); } catch (Exception $e) { echo 'Exception when calling DefaultApi->listCalls: ', $e->getMessage(), PHP_EOL; @@ -2841,6 +2846,7 @@ try { | Name | Type | Description | Notes | | ------------- | ------------- | ------------- | ------------- | +| **used_audio_stream** | **bool**| If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned | [optional] [default to false] | | **active** | **bool**| If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. | [optional] [default to false] | | **to** | **string**| Only show Calls to this phone number. | [optional] | | **from** | **string**| Only show Calls from this phone number. | [optional] | @@ -2872,7 +2878,7 @@ try { ## `listConferenceRecordings()` ```php -listConferenceRecordings($conference_id, $call_id, $date_created): \FreeClimb\Api\Model\RecordingList +listConferenceRecordings($conference_id, $call_id, $date_created, $start_time, $end_time): \FreeClimb\Api\Model\RecordingList ``` List Conference Recordings @@ -2899,9 +2905,11 @@ $apiInstance = new FreeClimb\Api\Api\DefaultApi( $conference_id = 'conference_id_example'; // string | Show only Recordings made during the conference with this ID. $call_id = 'call_id_example'; // string | Show only Recordings made during the Call with this ID. $date_created = 'date_created_example'; // string | Only show Recordings created on this date, formatted as *YYYY-MM-DD*. +$start_time = 'start_time_example'; // string | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. +$end_time = 'end_time_example'; // string | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. try { - $result = $apiInstance->listConferenceRecordings($conference_id, $call_id, $date_created); + $result = $apiInstance->listConferenceRecordings($conference_id, $call_id, $date_created, $start_time, $end_time); print_r($result); } catch (Exception $e) { echo 'Exception when calling DefaultApi->listConferenceRecordings: ', $e->getMessage(), PHP_EOL; @@ -2915,6 +2923,8 @@ try { | **conference_id** | **string**| Show only Recordings made during the conference with this ID. | | | **call_id** | **string**| Show only Recordings made during the Call with this ID. | [optional] | | **date_created** | **string**| Only show Recordings created on this date, formatted as *YYYY-MM-DD*. | [optional] | +| **start_time** | **string**| Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. | [optional] | +| **end_time** | **string**| Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. | [optional] | ### Return type @@ -3276,7 +3286,7 @@ try { ## `listRecordings()` ```php -listRecordings($call_id, $conference_id, $date_created): \FreeClimb\Api\Model\RecordingList +listRecordings($call_id, $conference_id, $date_created, $start_time, $end_time): \FreeClimb\Api\Model\RecordingList ``` List Recordings @@ -3303,9 +3313,11 @@ $apiInstance = new FreeClimb\Api\Api\DefaultApi( $call_id = 'call_id_example'; // string | Show only Recordings made during the Call with this ID. $conference_id = 'conference_id_example'; // string | Show only Recordings made during the conference with this ID. $date_created = 'date_created_example'; // string | Only show Recordings created on this date, formatted as *YYYY-MM-DD*. +$start_time = 'start_time_example'; // string | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. +$end_time = 'end_time_example'; // string | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. try { - $result = $apiInstance->listRecordings($call_id, $conference_id, $date_created); + $result = $apiInstance->listRecordings($call_id, $conference_id, $date_created, $start_time, $end_time); print_r($result); } catch (Exception $e) { echo 'Exception when calling DefaultApi->listRecordings: ', $e->getMessage(), PHP_EOL; @@ -3319,6 +3331,8 @@ try { | **call_id** | **string**| Show only Recordings made during the Call with this ID. | [optional] | | **conference_id** | **string**| Show only Recordings made during the conference with this ID. | [optional] | | **date_created** | **string**| Only show Recordings created on this date, formatted as *YYYY-MM-DD*. | [optional] | +| **start_time** | **string**| Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. | [optional] | +| **end_time** | **string**| Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. | [optional] | ### Return type diff --git a/docs/Model/CallResult.md b/docs/Model/CallResult.md index 1782590..07ea447 100644 --- a/docs/Model/CallResult.md +++ b/docs/Model/CallResult.md @@ -20,6 +20,7 @@ Name | Type | Description | Notes **end_time** | **string** | 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. | [optional] **duration** | **int** | Total length of the Call in seconds. Measures time between startTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls. | [optional] **connect_duration** | **int** | 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. | [optional] +**audio_stream_duration** | **int** | 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. | [optional] **direction** | [**\FreeClimb\Api\Model\CallDirection**](CallDirection.md) | | [optional] **answered_by** | [**\FreeClimb\Api\Model\AnsweredBy**](AnsweredBy.md) | | [optional] **subresource_uris** | **object** | The list of subresources for this Call. These include things like logs and recordings associated with the Call. | [optional] diff --git a/lib/Api/DefaultApi.php b/lib/Api/DefaultApi.php index c5063db..1b0f22c 100644 --- a/lib/Api/DefaultApi.php +++ b/lib/Api/DefaultApi.php @@ -1040,7 +1040,7 @@ public function createAQueueWithHttpInfo($queue_request = null, string $contentT switch ($statusCode) { - case 200: + case 201: if ('\FreeClimb\Api\Model\QueueResult' === '\SplFileObject') { $content = $response->getBody(); //stream goes to serializer } else { @@ -1112,7 +1112,7 @@ public function createAQueueWithHttpInfo($queue_request = null, string $contentT } catch (ApiException $e) { switch ($e->getCode()) { - case 200: + case 201: $data = ObjectSerializer::deserialize( $e->getResponseBody(), '\FreeClimb\Api\Model\QueueResult', @@ -15150,15 +15150,19 @@ public function listCallLogsRequest($call_id, string $contentType = self::conten * @param string $date_created Only show recordings created on the specified date, in the form *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listCallRecordings'] to see the possible values for this operation * * @throws \FreeClimb\Api\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return \FreeClimb\Api\Model\RecordingList */ - public function listCallRecordings($call_id, $date_created = null, string $contentType = self::contentTypes['listCallRecordings'][0]) + public function listCallRecordings($call_id, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listCallRecordings'][0]) { - list($response) = $this->listCallRecordingsWithHttpInfo($call_id, $date_created, $contentType); + list($response) = $this->listCallRecordingsWithHttpInfo($call_id, $date_created, $start_time, $end_time, $contentType); return $response; } /** @@ -15171,15 +15175,19 @@ public function listCallRecordings($call_id, $date_created = null, string $conte * @param string $date_created Only show recordings created on the specified date, in the form *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listCallRecordings'] to see the possible values for this operation * * @throws \FreeClimb\Api\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return array of \FreeClimb\Api\Model\RecordingList, HTTP status code, HTTP response headers (array of strings) */ - public function listCallRecordingsWithHttpInfo($call_id, $date_created = null, string $contentType = self::contentTypes['listCallRecordings'][0]) + public function listCallRecordingsWithHttpInfo($call_id, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listCallRecordings'][0]) { - $request = $this->listCallRecordingsRequest($call_id, $date_created, $contentType); + $request = $this->listCallRecordingsRequest($call_id, $date_created, $start_time, $end_time, $contentType); try { $options = $this->createHttpClientOption(); @@ -15300,14 +15308,18 @@ public function listCallRecordingsWithHttpInfo($call_id, $date_created = null, s * @param string $date_created Only show recordings created on the specified date, in the form *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listCallRecordings'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function listCallRecordingsAsync($call_id, $date_created = null, string $contentType = self::contentTypes['listCallRecordings'][0]) + public function listCallRecordingsAsync($call_id, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listCallRecordings'][0]) { - return $this->listCallRecordingsAsyncWithHttpInfo($call_id, $date_created, $contentType) + return $this->listCallRecordingsAsyncWithHttpInfo($call_id, $date_created, $start_time, $end_time, $contentType) ->then( function ($response) { return $response[0]; @@ -15325,15 +15337,19 @@ function ($response) { * @param string $date_created Only show recordings created on the specified date, in the form *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listCallRecordings'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function listCallRecordingsAsyncWithHttpInfo($call_id, $date_created = null, string $contentType = self::contentTypes['listCallRecordings'][0]) + public function listCallRecordingsAsyncWithHttpInfo($call_id, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listCallRecordings'][0]) { $returnType = '\FreeClimb\Api\Model\RecordingList'; - $request = $this->listCallRecordingsRequest($call_id, $date_created, $contentType); + $request = $this->listCallRecordingsRequest($call_id, $date_created, $start_time, $end_time, $contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -15379,12 +15395,16 @@ function ($exception) { * @param string $date_created Only show recordings created on the specified date, in the form *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listCallRecordings'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function listCallRecordingsRequest($call_id, $date_created = null, string $contentType = self::contentTypes['listCallRecordings'][0]) + public function listCallRecordingsRequest($call_id, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listCallRecordings'][0]) { $account_id = $this->config->getUsername(); @@ -15398,6 +15418,8 @@ public function listCallRecordingsRequest($call_id, $date_created = null, string + + $resourcePath = '/Accounts/{accountId}/Calls/{callId}/Recordings'; $formParams = []; $queryParams = []; @@ -15414,6 +15436,24 @@ public function listCallRecordingsRequest($call_id, $date_created = null, string true, // explode false // required ) ?? []); + // query params + $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue( + $start_time, + 'startTime', // param base name + 'string', // openApiType + 'form', // style + true, // explode + false // required + ) ?? []); + // query params + $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue( + $end_time, + 'endTime', // param base name + 'string', // openApiType + 'form', // style + true, // explode + false // required + ) ?? []); // path params @@ -15497,6 +15537,8 @@ public function listCallRecordingsRequest($call_id, $date_created = null, string * List Calls * + * @param bool $used_audio_stream If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned (optional, default to false) + * @param bool $active If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. (optional, default to false) * @param string $to Only show Calls to this phone number. (optional) @@ -15523,9 +15565,9 @@ public function listCallRecordingsRequest($call_id, $date_created = null, string * @throws \InvalidArgumentException * @return \FreeClimb\Api\Model\CallList */ - public function listCalls($active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) + public function listCalls($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) { - list($response) = $this->listCallsWithHttpInfo($active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType); + list($response) = $this->listCallsWithHttpInfo($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType); return $response; } /** @@ -15534,6 +15576,8 @@ public function listCalls($active = false, $to = null, $from = null, $status = n * List Calls * + * @param bool $used_audio_stream If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned (optional, default to false) + * @param bool $active If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. (optional, default to false) * @param string $to Only show Calls to this phone number. (optional) @@ -15560,9 +15604,9 @@ public function listCalls($active = false, $to = null, $from = null, $status = n * @throws \InvalidArgumentException * @return array of \FreeClimb\Api\Model\CallList, HTTP status code, HTTP response headers (array of strings) */ - public function listCallsWithHttpInfo($active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) + public function listCallsWithHttpInfo($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) { - $request = $this->listCallsRequest($active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType); + $request = $this->listCallsRequest($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType); try { $options = $this->createHttpClientOption(); @@ -15679,6 +15723,8 @@ public function listCallsWithHttpInfo($active = false, $to = null, $from = null, * List Calls * + * @param bool $used_audio_stream If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned (optional, default to false) + * @param bool $active If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. (optional, default to false) * @param string $to Only show Calls to this phone number. (optional) @@ -15704,9 +15750,9 @@ public function listCallsWithHttpInfo($active = false, $to = null, $from = null, * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function listCallsAsync($active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) + public function listCallsAsync($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) { - return $this->listCallsAsyncWithHttpInfo($active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType) + return $this->listCallsAsyncWithHttpInfo($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType) ->then( function ($response) { return $response[0]; @@ -15720,6 +15766,8 @@ function ($response) { * List Calls * + * @param bool $used_audio_stream If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned (optional, default to false) + * @param bool $active If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. (optional, default to false) * @param string $to Only show Calls to this phone number. (optional) @@ -15745,10 +15793,10 @@ function ($response) { * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function listCallsAsyncWithHttpInfo($active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) + public function listCallsAsyncWithHttpInfo($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) { $returnType = '\FreeClimb\Api\Model\CallList'; - $request = $this->listCallsRequest($active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType); + $request = $this->listCallsRequest($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -15790,6 +15838,8 @@ function ($exception) { * Create request for operation 'listCalls' * + * @param bool $used_audio_stream If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned (optional, default to false) + * @param bool $active If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. (optional, default to false) * @param string $to Only show Calls to this phone number. (optional) @@ -15815,7 +15865,7 @@ function ($exception) { * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function listCallsRequest($active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) + public function listCallsRequest($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) { $account_id = $this->config->getUsername(); @@ -15826,6 +15876,7 @@ public function listCallsRequest($active = false, $to = null, $from = null, $sta + if ($application_id !== null && count($application_id) > 16) { throw new \InvalidArgumentException('invalid value for "$application_id" when calling DefaultApi.listCalls, number of items must be less than or equal to 16.'); } @@ -15841,6 +15892,15 @@ public function listCallsRequest($active = false, $to = null, $from = null, $sta $httpBody = ''; $multipart = false; + // query params + $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue( + $used_audio_stream, + 'usedAudioStream', // param base name + 'boolean', // openApiType + 'form', // style + true, // explode + false // required + ) ?? []); // query params $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue( $active, @@ -16012,15 +16072,19 @@ public function listCallsRequest($active = false, $to = null, $from = null, $sta * @param string $date_created Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listConferenceRecordings'] to see the possible values for this operation * * @throws \FreeClimb\Api\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return \FreeClimb\Api\Model\RecordingList */ - public function listConferenceRecordings($conference_id, $call_id = null, $date_created = null, string $contentType = self::contentTypes['listConferenceRecordings'][0]) + public function listConferenceRecordings($conference_id, $call_id = null, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listConferenceRecordings'][0]) { - list($response) = $this->listConferenceRecordingsWithHttpInfo($conference_id, $call_id, $date_created, $contentType); + list($response) = $this->listConferenceRecordingsWithHttpInfo($conference_id, $call_id, $date_created, $start_time, $end_time, $contentType); return $response; } /** @@ -16035,15 +16099,19 @@ public function listConferenceRecordings($conference_id, $call_id = null, $date_ * @param string $date_created Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listConferenceRecordings'] to see the possible values for this operation * * @throws \FreeClimb\Api\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return array of \FreeClimb\Api\Model\RecordingList, HTTP status code, HTTP response headers (array of strings) */ - public function listConferenceRecordingsWithHttpInfo($conference_id, $call_id = null, $date_created = null, string $contentType = self::contentTypes['listConferenceRecordings'][0]) + public function listConferenceRecordingsWithHttpInfo($conference_id, $call_id = null, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listConferenceRecordings'][0]) { - $request = $this->listConferenceRecordingsRequest($conference_id, $call_id, $date_created, $contentType); + $request = $this->listConferenceRecordingsRequest($conference_id, $call_id, $date_created, $start_time, $end_time, $contentType); try { $options = $this->createHttpClientOption(); @@ -16166,14 +16234,18 @@ public function listConferenceRecordingsWithHttpInfo($conference_id, $call_id = * @param string $date_created Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listConferenceRecordings'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function listConferenceRecordingsAsync($conference_id, $call_id = null, $date_created = null, string $contentType = self::contentTypes['listConferenceRecordings'][0]) + public function listConferenceRecordingsAsync($conference_id, $call_id = null, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listConferenceRecordings'][0]) { - return $this->listConferenceRecordingsAsyncWithHttpInfo($conference_id, $call_id, $date_created, $contentType) + return $this->listConferenceRecordingsAsyncWithHttpInfo($conference_id, $call_id, $date_created, $start_time, $end_time, $contentType) ->then( function ($response) { return $response[0]; @@ -16193,15 +16265,19 @@ function ($response) { * @param string $date_created Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listConferenceRecordings'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function listConferenceRecordingsAsyncWithHttpInfo($conference_id, $call_id = null, $date_created = null, string $contentType = self::contentTypes['listConferenceRecordings'][0]) + public function listConferenceRecordingsAsyncWithHttpInfo($conference_id, $call_id = null, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listConferenceRecordings'][0]) { $returnType = '\FreeClimb\Api\Model\RecordingList'; - $request = $this->listConferenceRecordingsRequest($conference_id, $call_id, $date_created, $contentType); + $request = $this->listConferenceRecordingsRequest($conference_id, $call_id, $date_created, $start_time, $end_time, $contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -16249,12 +16325,16 @@ function ($exception) { * @param string $date_created Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listConferenceRecordings'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function listConferenceRecordingsRequest($conference_id, $call_id = null, $date_created = null, string $contentType = self::contentTypes['listConferenceRecordings'][0]) + public function listConferenceRecordingsRequest($conference_id, $call_id = null, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listConferenceRecordings'][0]) { $account_id = $this->config->getUsername(); @@ -16269,6 +16349,8 @@ public function listConferenceRecordingsRequest($conference_id, $call_id = null, + + $resourcePath = '/Accounts/{accountId}/Conferences/{conferenceId}/Recordings'; $formParams = []; $queryParams = []; @@ -16294,6 +16376,24 @@ public function listConferenceRecordingsRequest($conference_id, $call_id = null, true, // explode false // required ) ?? []); + // query params + $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue( + $start_time, + 'startTime', // param base name + 'string', // openApiType + 'form', // style + true, // explode + false // required + ) ?? []); + // query params + $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue( + $end_time, + 'endTime', // param base name + 'string', // openApiType + 'form', // style + true, // explode + false // required + ) ?? []); // path params @@ -18423,15 +18523,19 @@ public function listParticipantsRequest($conference_id, $talk = null, $listen = * @param string $date_created Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listRecordings'] to see the possible values for this operation * * @throws \FreeClimb\Api\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return \FreeClimb\Api\Model\RecordingList */ - public function listRecordings($call_id = null, $conference_id = null, $date_created = null, string $contentType = self::contentTypes['listRecordings'][0]) + public function listRecordings($call_id = null, $conference_id = null, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listRecordings'][0]) { - list($response) = $this->listRecordingsWithHttpInfo($call_id, $conference_id, $date_created, $contentType); + list($response) = $this->listRecordingsWithHttpInfo($call_id, $conference_id, $date_created, $start_time, $end_time, $contentType); return $response; } /** @@ -18446,15 +18550,19 @@ public function listRecordings($call_id = null, $conference_id = null, $date_cre * @param string $date_created Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listRecordings'] to see the possible values for this operation * * @throws \FreeClimb\Api\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return array of \FreeClimb\Api\Model\RecordingList, HTTP status code, HTTP response headers (array of strings) */ - public function listRecordingsWithHttpInfo($call_id = null, $conference_id = null, $date_created = null, string $contentType = self::contentTypes['listRecordings'][0]) + public function listRecordingsWithHttpInfo($call_id = null, $conference_id = null, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listRecordings'][0]) { - $request = $this->listRecordingsRequest($call_id, $conference_id, $date_created, $contentType); + $request = $this->listRecordingsRequest($call_id, $conference_id, $date_created, $start_time, $end_time, $contentType); try { $options = $this->createHttpClientOption(); @@ -18577,14 +18685,18 @@ public function listRecordingsWithHttpInfo($call_id = null, $conference_id = nul * @param string $date_created Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listRecordings'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function listRecordingsAsync($call_id = null, $conference_id = null, $date_created = null, string $contentType = self::contentTypes['listRecordings'][0]) + public function listRecordingsAsync($call_id = null, $conference_id = null, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listRecordings'][0]) { - return $this->listRecordingsAsyncWithHttpInfo($call_id, $conference_id, $date_created, $contentType) + return $this->listRecordingsAsyncWithHttpInfo($call_id, $conference_id, $date_created, $start_time, $end_time, $contentType) ->then( function ($response) { return $response[0]; @@ -18604,15 +18716,19 @@ function ($response) { * @param string $date_created Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listRecordings'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function listRecordingsAsyncWithHttpInfo($call_id = null, $conference_id = null, $date_created = null, string $contentType = self::contentTypes['listRecordings'][0]) + public function listRecordingsAsyncWithHttpInfo($call_id = null, $conference_id = null, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listRecordings'][0]) { $returnType = '\FreeClimb\Api\Model\RecordingList'; - $request = $this->listRecordingsRequest($call_id, $conference_id, $date_created, $contentType); + $request = $this->listRecordingsRequest($call_id, $conference_id, $date_created, $start_time, $end_time, $contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -18660,12 +18776,16 @@ function ($exception) { * @param string $date_created Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional) + * @param string $start_time Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional) + + * @param string $end_time Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listRecordings'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function listRecordingsRequest($call_id = null, $conference_id = null, $date_created = null, string $contentType = self::contentTypes['listRecordings'][0]) + public function listRecordingsRequest($call_id = null, $conference_id = null, $date_created = null, $start_time = null, $end_time = null, string $contentType = self::contentTypes['listRecordings'][0]) { $account_id = $this->config->getUsername(); @@ -18674,6 +18794,8 @@ public function listRecordingsRequest($call_id = null, $conference_id = null, $d + + $resourcePath = '/Accounts/{accountId}/Recordings'; $formParams = []; $queryParams = []; @@ -18708,6 +18830,24 @@ public function listRecordingsRequest($call_id = null, $conference_id = null, $d true, // explode false // required ) ?? []); + // query params + $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue( + $start_time, + 'startTime', // param base name + 'string', // openApiType + 'form', // style + true, // explode + false // required + ) ?? []); + // query params + $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue( + $end_time, + 'endTime', // param base name + 'string', // openApiType + 'form', // style + true, // explode + false // required + ) ?? []); // path params diff --git a/lib/Configuration.php b/lib/Configuration.php index af3b45f..206a281 100644 --- a/lib/Configuration.php +++ b/lib/Configuration.php @@ -102,7 +102,7 @@ class Configuration * * @var string */ - protected $userAgent = 'OpenAPI-Generator/5.3.0/PHP'; + protected $userAgent = 'OpenAPI-Generator/5.2.1/PHP'; /** * Debug switch (default set to false) @@ -435,7 +435,7 @@ public static function toDebugReport() $report .= ' OS: ' . php_uname() . PHP_EOL; $report .= ' PHP Version: ' . PHP_VERSION . PHP_EOL; $report .= ' The version of the OpenAPI document: 1.0.0' . PHP_EOL; - $report .= ' SDK Package Version: 5.3.0' . PHP_EOL; + $report .= ' SDK Package Version: 5.2.1' . PHP_EOL; $report .= ' Temp Folder Path: ' . self::getDefaultConfiguration()->getTempFolderPath() . PHP_EOL; return $report; diff --git a/lib/Model/CallResult.php b/lib/Model/CallResult.php index fe19c7e..b69f9a2 100644 --- a/lib/Model/CallResult.php +++ b/lib/Model/CallResult.php @@ -75,6 +75,7 @@ class CallResult implements ModelInterface, ArrayAccess, \JsonSerializable 'end_time' => 'string', 'duration' => 'int', 'connect_duration' => 'int', + 'audio_stream_duration' => 'int', 'direction' => '\FreeClimb\Api\Model\CallDirection', 'answered_by' => '\FreeClimb\Api\Model\AnsweredBy', 'subresource_uris' => 'object', @@ -105,6 +106,7 @@ class CallResult implements ModelInterface, ArrayAccess, \JsonSerializable 'end_time' => null, 'duration' => null, 'connect_duration' => null, + 'audio_stream_duration' => null, 'direction' => null, 'answered_by' => null, 'subresource_uris' => null, @@ -133,6 +135,7 @@ class CallResult implements ModelInterface, ArrayAccess, \JsonSerializable 'end_time' => true, 'duration' => true, 'connect_duration' => true, + 'audio_stream_duration' => true, 'direction' => true, 'answered_by' => true, 'subresource_uris' => true, @@ -241,6 +244,7 @@ public function isNullableSetToNull(string $property): bool 'end_time' => 'endTime', 'duration' => 'duration', 'connect_duration' => 'connectDuration', + 'audio_stream_duration' => 'audioStreamDuration', 'direction' => 'direction', 'answered_by' => 'answeredBy', 'subresource_uris' => 'subresourceUris', @@ -269,6 +273,7 @@ public function isNullableSetToNull(string $property): bool 'end_time' => 'setEndTime', 'duration' => 'setDuration', 'connect_duration' => 'setConnectDuration', + 'audio_stream_duration' => 'setAudioStreamDuration', 'direction' => 'setDirection', 'answered_by' => 'setAnsweredBy', 'subresource_uris' => 'setSubresourceUris', @@ -297,6 +302,7 @@ public function isNullableSetToNull(string $property): bool 'end_time' => 'getEndTime', 'duration' => 'getDuration', 'connect_duration' => 'getConnectDuration', + 'audio_stream_duration' => 'getAudioStreamDuration', 'direction' => 'getDirection', 'answered_by' => 'getAnsweredBy', 'subresource_uris' => 'getSubresourceUris', @@ -376,6 +382,7 @@ public function __construct(?array $data = null) $this->setIfExists('end_time', $data ?? [], null); $this->setIfExists('duration', $data ?? [], null); $this->setIfExists('connect_duration', $data ?? [], null); + $this->setIfExists('audio_stream_duration', $data ?? [], null); $this->setIfExists('direction', $data ?? [], null); $this->setIfExists('answered_by', $data ?? [], null); $this->setIfExists('subresource_uris', $data ?? [], null); @@ -940,6 +947,40 @@ public function setConnectDuration($connect_duration) return $this; } + /** + * Gets audio_stream_duration + * + * @return int|null + */ + public function getAudioStreamDuration() + { + return $this->container['audio_stream_duration']; + } + + /** + * Sets audio_stream_duration + * + * @param int|null $audio_stream_duration 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. + * + * @return self + */ + public function setAudioStreamDuration($audio_stream_duration) + { + if (is_null($audio_stream_duration)) { + array_push($this->openAPINullablesSetToNull, 'audio_stream_duration'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('audio_stream_duration', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['audio_stream_duration'] = $audio_stream_duration; + + return $this; + } + /** * Gets direction * diff --git a/openapi.json b/openapi.json index 27b9cbd..fd9ec40 100644 --- a/openapi.json +++ b/openapi.json @@ -2464,6 +2464,7 @@ }, { "required": ["text"], + "type": "object", "properties": { "text": { "description": "The message to be played to the caller using TTS. The size of the string is limited to 4 KB (or 4,096 bytes). An empty string will cause the command to be skipped.", @@ -3174,6 +3175,11 @@ "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" }, @@ -6002,6 +6008,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", @@ -6144,6 +6160,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, @@ -6618,6 +6652,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": { @@ -6765,7 +6817,7 @@ }, "deprecated": false, "responses": { - "200": { + "201": { "description": "Successfuly created queue", "content": { "application/json": { @@ -7056,6 +7108,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/test/Api/DefaultApiTest.php b/test/Api/DefaultApiTest.php index dd8d963..a5e3af0 100644 --- a/test/Api/DefaultApiTest.php +++ b/test/Api/DefaultApiTest.php @@ -721,6 +721,34 @@ public function blob_id_replaceBlob_test_value() { return "BL0123456789abcdefABCDEF0123456789abcdef00"; } + public function start_time_listConferenceRecordings_test_value(): string + { + return 'start_time_example'; + } + public function end_time_listConferenceRecordings_test_value(): string + { + return 'end_time_example'; + } + public function start_time_listCallRecordings_test_value(): string + { + return 'start_time_example'; + } + public function end_time_listCallRecordings_test_value(): string + { + return 'end_time_example'; + } + public function start_time_listRecordings_test_value(): string + { + return 'start_time_example'; + } + public function end_time_listRecordings_test_value(): string + { + return 'end_time_example'; + } + public function used_audio_stream_listCalls_test_value(): string + { + return "true"; + } /** * Setup before running each test case */ @@ -1491,8 +1519,12 @@ public function testListCallRecordings() //$date_created = $date_created_test_value; + //$start_time = $start_time_test_value; + + //$end_time = $end_time_test_value; + - $response = static::$apiInstance->listCallRecordings($this->call_id_listCallRecordings_test_value(), $this->date_created_listCallRecordings_test_value()); + $response = static::$apiInstance->listCallRecordings($this->call_id_listCallRecordings_test_value(), $this->date_created_listCallRecordings_test_value(), $this->start_time_listCallRecordings_test_value(), $this->end_time_listCallRecordings_test_value()); $this->assertInstanceOf('\FreeClimb\Api\Model\RecordingList', $response); } @@ -1505,6 +1537,8 @@ public function testListCallRecordings() public function testListCalls() { + //$used_audio_stream = $used_audio_stream_test_value; + //$active = $active_test_value; //$to = $to_test_value; @@ -1526,7 +1560,7 @@ public function testListCalls() //$risk_score_max = $risk_score_max_test_value; - $response = static::$apiInstance->listCalls($this->active_listCalls_test_value(), $this->to_listCalls_test_value(), $this->from_listCalls_test_value(), $this->status_listCalls_test_value(), $this->start_time_listCalls_test_value(), $this->end_time_listCalls_test_value(), $this->parent_call_id_listCalls_test_value(), $this->application_id_listCalls_test_value(), $this->risk_score_min_listCalls_test_value(), $this->risk_score_max_listCalls_test_value()); + $response = static::$apiInstance->listCalls($this->used_audio_stream_listCalls_test_value(), $this->active_listCalls_test_value(), $this->to_listCalls_test_value(), $this->from_listCalls_test_value(), $this->status_listCalls_test_value(), $this->start_time_listCalls_test_value(), $this->end_time_listCalls_test_value(), $this->parent_call_id_listCalls_test_value(), $this->application_id_listCalls_test_value(), $this->risk_score_min_listCalls_test_value(), $this->risk_score_max_listCalls_test_value()); $this->assertInstanceOf('\FreeClimb\Api\Model\CallList', $response); } @@ -1545,8 +1579,12 @@ public function testListConferenceRecordings() //$date_created = $date_created_test_value; + //$start_time = $start_time_test_value; + + //$end_time = $end_time_test_value; + - $response = static::$apiInstance->listConferenceRecordings($this->conference_id_listConferenceRecordings_test_value(), $this->call_id_listConferenceRecordings_test_value(), $this->date_created_listConferenceRecordings_test_value()); + $response = static::$apiInstance->listConferenceRecordings($this->conference_id_listConferenceRecordings_test_value(), $this->call_id_listConferenceRecordings_test_value(), $this->date_created_listConferenceRecordings_test_value(), $this->start_time_listConferenceRecordings_test_value(), $this->end_time_listConferenceRecordings_test_value()); $this->assertInstanceOf('\FreeClimb\Api\Model\RecordingList', $response); } @@ -1685,8 +1723,12 @@ public function testListRecordings() //$date_created = $date_created_test_value; + //$start_time = $start_time_test_value; + + //$end_time = $end_time_test_value; + - $response = static::$apiInstance->listRecordings($this->call_id_listRecordings_test_value(), $this->conference_id_listRecordings_test_value(), $this->date_created_listRecordings_test_value()); + $response = static::$apiInstance->listRecordings($this->call_id_listRecordings_test_value(), $this->conference_id_listRecordings_test_value(), $this->date_created_listRecordings_test_value(), $this->start_time_listRecordings_test_value(), $this->end_time_listRecordings_test_value()); $this->assertInstanceOf('\FreeClimb\Api\Model\RecordingList', $response); } @@ -2123,7 +2165,7 @@ public function testGetNextPageListCallLogs() public function testGetNextPageListCallRecordings() { - $response = static::$apiInstance->listCallRecordings($this->call_id_listCallRecordings_test_value(), $this->date_created_listCallRecordings_test_value()); + $response = static::$apiInstance->listCallRecordings($this->call_id_listCallRecordings_test_value(), $this->date_created_listCallRecordings_test_value(), $this->start_time_listCallRecordings_test_value(), $this->end_time_listCallRecordings_test_value()); $response['next_page_uri'] = '/Accounts/{accountId}/Calls/{callId}/Recordings?cursor=1'; $nextPageResponse = static::$apiInstance->getNextPage($response); $this->assertInstanceOf('\FreeClimb\Api\Model\RecordingList', $nextPageResponse); @@ -2136,7 +2178,7 @@ public function testGetNextPageListCallRecordings() public function testGetNextPageListCalls() { - $response = static::$apiInstance->listCalls($this->active_listCalls_test_value(), $this->to_listCalls_test_value(), $this->from_listCalls_test_value(), $this->status_listCalls_test_value(), $this->start_time_listCalls_test_value(), $this->end_time_listCalls_test_value(), $this->parent_call_id_listCalls_test_value(), $this->application_id_listCalls_test_value(), $this->risk_score_min_listCalls_test_value(), $this->risk_score_max_listCalls_test_value()); + $response = static::$apiInstance->listCalls($this->used_audio_stream_listCalls_test_value(), $this->active_listCalls_test_value(), $this->to_listCalls_test_value(), $this->from_listCalls_test_value(), $this->status_listCalls_test_value(), $this->start_time_listCalls_test_value(), $this->end_time_listCalls_test_value(), $this->parent_call_id_listCalls_test_value(), $this->application_id_listCalls_test_value(), $this->risk_score_min_listCalls_test_value(), $this->risk_score_max_listCalls_test_value()); $response['next_page_uri'] = '/Accounts/{accountId}/Calls?cursor=1'; $nextPageResponse = static::$apiInstance->getNextPage($response); $this->assertInstanceOf('\FreeClimb\Api\Model\CallList', $nextPageResponse); @@ -2149,7 +2191,7 @@ public function testGetNextPageListCalls() public function testGetNextPageListConferenceRecordings() { - $response = static::$apiInstance->listConferenceRecordings($this->conference_id_listConferenceRecordings_test_value(), $this->call_id_listConferenceRecordings_test_value(), $this->date_created_listConferenceRecordings_test_value()); + $response = static::$apiInstance->listConferenceRecordings($this->conference_id_listConferenceRecordings_test_value(), $this->call_id_listConferenceRecordings_test_value(), $this->date_created_listConferenceRecordings_test_value(), $this->start_time_listConferenceRecordings_test_value(), $this->end_time_listConferenceRecordings_test_value()); $response['next_page_uri'] = '/Accounts/{accountId}/Conferences/{conferenceId}/Recordings?cursor=1'; $nextPageResponse = static::$apiInstance->getNextPage($response); $this->assertInstanceOf('\FreeClimb\Api\Model\RecordingList', $nextPageResponse); @@ -2227,7 +2269,7 @@ public function testGetNextPageListParticipants() public function testGetNextPageListRecordings() { - $response = static::$apiInstance->listRecordings($this->call_id_listRecordings_test_value(), $this->conference_id_listRecordings_test_value(), $this->date_created_listRecordings_test_value()); + $response = static::$apiInstance->listRecordings($this->call_id_listRecordings_test_value(), $this->conference_id_listRecordings_test_value(), $this->date_created_listRecordings_test_value(), $this->start_time_listRecordings_test_value(), $this->end_time_listRecordings_test_value()); $response['next_page_uri'] = '/Accounts/{accountId}/Recordings?cursor=1'; $nextPageResponse = static::$apiInstance->getNextPage($response); $this->assertInstanceOf('\FreeClimb\Api\Model\RecordingList', $nextPageResponse); @@ -2243,7 +2285,7 @@ public function testGetNextPageListSmsMessages() $response = static::$apiInstance->listSmsMessages($this->to_listSmsMessages_test_value(), $this->from_listSmsMessages_test_value(), $this->begin_time_listSmsMessages_test_value(), $this->end_time_listSmsMessages_test_value(), $this->direction_listSmsMessages_test_value(), $this->campaign_id_listSmsMessages_test_value(), $this->brand_id_listSmsMessages_test_value(), $this->is10_dlc_listSmsMessages_test_value()); $response['next_page_uri'] = '/Accounts/{accountId}/Messages?cursor=1'; $nextPageResponse = static::$apiInstance->getNextPage($response); - $this->assertInstanceOf('\FreeClimb\Api\Model\MessagesList',$nextPageResponse); + $this->assertInstanceOf('\FreeClimb\Api\Model\MessagesList', $nextPageResponse); } } diff --git a/test/Model/CallResultTest.php b/test/Model/CallResultTest.php index 356c048..bee24d4 100644 --- a/test/Model/CallResultTest.php +++ b/test/Model/CallResultTest.php @@ -220,6 +220,16 @@ public function testPropertyConnectDuration() } + public function testPropertyAudioStreamDuration() + { + + + $this->CallResult->setaudioStreamDuration(1); + $this->assertEquals(1, $this->CallResult->getaudioStreamDuration()); + $this->assertIsNumeric($this->CallResult->getaudioStreamDuration()); + + } + public function testPropertyDirection() { $this->CallResult->setdirection(\FreeClimb\Api\Model\CallDirection::INBOUND); From c481cb01a1c7cf092161d6f385bae9b823779781 Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Wed, 4 Mar 2026 11:13:56 -0500 Subject: [PATCH 02/11] Run composer update to fix build in PHP SDK --- composer.lock | 373 +++++++++++++++++++++++++------------------------- 1 file changed, 187 insertions(+), 186 deletions(-) diff --git a/composer.lock b/composer.lock index da221c5..008e295 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "24af19a245afebf1e7149f8e4f5e9f1a", + "content-hash": "5b1631e31a89f00d8405bfea1c976616", "packages": [ { "name": "guzzlehttp/guzzle", @@ -892,30 +892,29 @@ }, { "name": "doctrine/instantiator", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.4" }, "require-dev": { - "doctrine/coding-standard": "^11", + "doctrine/coding-standard": "^14", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -942,7 +941,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + "source": "https://github.com/doctrine/instantiator/tree/2.1.0" }, "funding": [ { @@ -958,7 +957,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2026-01-05T06:47:08+00:00" }, { "name": "evenement/evenement", @@ -1070,16 +1069,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.89.1", + "version": "v3.94.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "f34967da2866ace090a2b447de1f357356474573" + "reference": "7787ceff91365ba7d623ec410b8f429cdebb4f63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/f34967da2866ace090a2b447de1f357356474573", - "reference": "f34967da2866ace090a2b447de1f357356474573", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7787ceff91365ba7d623ec410b8f429cdebb4f63", + "reference": "7787ceff91365ba7d623ec410b8f429cdebb4f63", "shasum": "" }, "require": { @@ -1096,31 +1095,32 @@ "react/event-loop": "^1.5", "react/socket": "^1.16", "react/stream": "^1.4", - "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", - "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0", - "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0", - "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0", - "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0", - "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0", + "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0 || ^8.0", + "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", "symfony/polyfill-mbstring": "^1.33", "symfony/polyfill-php80": "^1.33", "symfony/polyfill-php81": "^1.33", "symfony/polyfill-php84": "^1.33", - "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2", - "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0" + "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2 || ^8.0", + "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0" }, "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.7", - "infection/infection": "^0.31.0", - "justinrainbow/json-schema": "^6.5", - "keradus/cli-executor": "^2.2", + "facile-it/paraunit": "^1.3.1 || ^2.7.1", + "infection/infection": "^0.32.3", + "justinrainbow/json-schema": "^6.6.4", + "keradus/cli-executor": "^2.3", "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.8", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", - "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", - "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2", - "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2" + "php-coveralls/php-coveralls": "^2.9.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.7", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.7", + "phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.51", + "symfony/polyfill-php85": "^1.33", + "symfony/var-dumper": "^5.4.48 || ^6.4.32 || ^7.4.4 || ^8.0.4", + "symfony/yaml": "^5.4.45 || ^6.4.30 || ^7.4.1 || ^8.0.1" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -1135,7 +1135,7 @@ "PhpCsFixer\\": "src/" }, "exclude-from-classmap": [ - "src/Fixer/Internal/*" + "src/**/Internal/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1161,7 +1161,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.89.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.2" }, "funding": [ { @@ -1169,7 +1169,7 @@ "type": "github" } ], - "time": "2025-10-24T12:05:10+00:00" + "time": "2026-02-20T16:13:53+00:00" }, { "name": "myclabs/deep-copy", @@ -1233,16 +1233,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.6.2", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "3a454ca033b9e06b63282ce19562e892747449bb" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb", - "reference": "3a454ca033b9e06b63282ce19562e892747449bb", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { @@ -1285,9 +1285,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2025-10-21T19:32:17+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "phar-io/manifest", @@ -1728,16 +1728,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.29", + "version": "9.6.34", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3" + "reference": "b36f02317466907a230d3aa1d34467041271ef4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", - "reference": "9ecfec57835a5581bc888ea7e13b51eb55ab9dd3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b36f02317466907a230d3aa1d34467041271ef4a", + "reference": "b36f02317466907a230d3aa1d34467041271ef4a", "shasum": "" }, "require": { @@ -1759,7 +1759,7 @@ "phpunit/php-timer": "^5.0.3", "sebastian/cli-parser": "^1.0.2", "sebastian/code-unit": "^1.0.8", - "sebastian/comparator": "^4.0.9", + "sebastian/comparator": "^4.0.10", "sebastian/diff": "^4.0.6", "sebastian/environment": "^5.1.5", "sebastian/exporter": "^4.0.8", @@ -1811,7 +1811,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.29" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.34" }, "funding": [ { @@ -1835,7 +1835,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:29:11+00:00" + "time": "2026-01-27T05:45:00+00:00" }, { "name": "psr/container", @@ -2064,16 +2064,16 @@ }, { "name": "react/child-process", - "version": "v0.6.6", + "version": "v0.6.7", "source": { "type": "git", "url": "https://github.com/reactphp/child-process.git", - "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" + "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", - "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/970f0e71945556422ee4570ccbabaedc3cf04ad3", + "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3", "shasum": "" }, "require": { @@ -2127,7 +2127,7 @@ ], "support": { "issues": "https://github.com/reactphp/child-process/issues", - "source": "https://github.com/reactphp/child-process/tree/v0.6.6" + "source": "https://github.com/reactphp/child-process/tree/v0.6.7" }, "funding": [ { @@ -2135,20 +2135,20 @@ "type": "open_collective" } ], - "time": "2025-01-01T16:37:48+00:00" + "time": "2025-12-23T15:25:20+00:00" }, { "name": "react/dns", - "version": "v1.13.0", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/reactphp/dns.git", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "url": "https://api.github.com/repos/reactphp/dns/zipball/7562c05391f42701c1fccf189c8225fece1cd7c3", + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3", "shasum": "" }, "require": { @@ -2203,7 +2203,7 @@ ], "support": { "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.13.0" + "source": "https://github.com/reactphp/dns/tree/v1.14.0" }, "funding": [ { @@ -2211,20 +2211,20 @@ "type": "open_collective" } ], - "time": "2024-06-13T14:18:03+00:00" + "time": "2025-11-18T19:34:28+00:00" }, { "name": "react/event-loop", - "version": "v1.5.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/reactphp/event-loop.git", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/ba276bda6083df7e0050fd9b33f66ad7a4ac747a", + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a", "shasum": "" }, "require": { @@ -2275,7 +2275,7 @@ ], "support": { "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + "source": "https://github.com/reactphp/event-loop/tree/v1.6.0" }, "funding": [ { @@ -2283,7 +2283,7 @@ "type": "open_collective" } ], - "time": "2023-11-13T13:48:05+00:00" + "time": "2025-11-17T20:46:25+00:00" }, { "name": "react/promise", @@ -2360,16 +2360,16 @@ }, { "name": "react/socket", - "version": "v1.16.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "url": "https://api.github.com/repos/reactphp/socket/zipball/ef5b17b81f6f60504c539313f94f2d826c5faa08", + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08", "shasum": "" }, "require": { @@ -2428,7 +2428,7 @@ ], "support": { "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.16.0" + "source": "https://github.com/reactphp/socket/tree/v1.17.0" }, "funding": [ { @@ -2436,7 +2436,7 @@ "type": "open_collective" } ], - "time": "2024-07-26T10:38:09+00:00" + "time": "2025-11-19T20:47:34+00:00" }, { "name": "react/stream", @@ -2685,16 +2685,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.9", + "version": "4.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5" + "reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/67a2df3a62639eab2cc5906065e9805d4fd5dfc5", - "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e4df00b9b3571187db2831ae9aada2c6efbd715d", + "reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d", "shasum": "" }, "require": { @@ -2747,7 +2747,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.9" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.10" }, "funding": [ { @@ -2767,7 +2767,7 @@ "type": "tidelift" } ], - "time": "2025-08-10T06:51:50+00:00" + "time": "2026-01-24T09:22:56+00:00" }, { "name": "sebastian/complexity", @@ -3529,47 +3529,39 @@ }, { "name": "symfony/console", - "version": "v7.3.4", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db" + "reference": "488285876e807a4777f074041d8bb508623419fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", - "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", + "url": "https://api.github.com/repos/symfony/console/zipball/488285876e807a4777f074041d8bb508623419fa", + "reference": "488285876e807a4777f074041d8bb508623419fa", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" + "symfony/string": "^7.4|^8.0" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -3603,7 +3595,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.4" + "source": "https://github.com/symfony/console/tree/v8.0.6" }, "funding": [ { @@ -3623,28 +3615,28 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2026-02-25T16:59:43+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.3.3", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" + "reference": "99301401da182b6cfaa4700dbe9987bb75474b47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/99301401da182b6cfaa4700dbe9987bb75474b47", + "reference": "99301401da182b6cfaa4700dbe9987bb75474b47", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<6.4", + "symfony/security-http": "<7.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -3653,13 +3645,14 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/error-handler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -3687,7 +3680,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v8.0.4" }, "funding": [ { @@ -3707,7 +3700,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2026-01-05T11:45:55+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3787,25 +3780,25 @@ }, { "name": "symfony/filesystem", - "version": "v7.3.2", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd" + "reference": "7bf9162d7a0dff98d079b72948508fa48018a770" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd", - "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7bf9162d7a0dff98d079b72948508fa48018a770", + "reference": "7bf9162d7a0dff98d079b72948508fa48018a770", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^6.4|^7.0" + "symfony/process": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -3833,7 +3826,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.3.2" + "source": "https://github.com/symfony/filesystem/tree/v8.0.6" }, "funding": [ { @@ -3853,27 +3846,27 @@ "type": "tidelift" } ], - "time": "2025-07-07T08:17:47+00:00" + "time": "2026-02-25T16:59:43+00:00" }, { "name": "symfony/finder", - "version": "v7.3.2", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" + "reference": "441404f09a54de6d1bd6ad219e088cdf4c91f97c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", + "url": "https://api.github.com/repos/symfony/finder/zipball/441404f09a54de6d1bd6ad219e088cdf4c91f97c", + "reference": "441404f09a54de6d1bd6ad219e088cdf4c91f97c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -3901,7 +3894,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.2" + "source": "https://github.com/symfony/finder/tree/v8.0.6" }, "funding": [ { @@ -3921,24 +3914,24 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2026-01-29T09:41:02+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.3.3", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d" + "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d", - "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d2b592535ffa6600c265a3893a7f7fd2bad82dd7", + "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -3972,7 +3965,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.3.3" + "source": "https://github.com/symfony/options-resolver/tree/v8.0.0" }, "funding": [ { @@ -3992,7 +3985,7 @@ "type": "tidelift" } ], - "time": "2025-08-05T10:16:07+00:00" + "time": "2025-11-12T15:55:31+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4575,20 +4568,20 @@ }, { "name": "symfony/process", - "version": "v7.3.4", + "version": "v8.0.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" + "reference": "b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", + "url": "https://api.github.com/repos/symfony/process/zipball/b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674", + "reference": "b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "type": "library", "autoload": { @@ -4616,7 +4609,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.4" + "source": "https://github.com/symfony/process/tree/v8.0.5" }, "funding": [ { @@ -4636,20 +4629,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2026-01-26T15:08:38+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.6.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { @@ -4703,7 +4696,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -4714,29 +4707,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-25T09:37:31+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.3.0", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" + "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/67df1914c6ccd2d7b52f70d40cf2aea02159d942", + "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -4765,7 +4762,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v8.0.0" }, "funding": [ { @@ -4776,43 +4773,47 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-24T10:49:57+00:00" + "time": "2025-08-04T07:36:47+00:00" }, { "name": "symfony/string", - "version": "v7.3.4", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f96476035142921000338bad71e5247fbc138872" + "reference": "6c9e1108041b5dce21a9a4984b531c4923aa9ec4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", - "reference": "f96476035142921000338bad71e5247fbc138872", + "url": "https://api.github.com/repos/symfony/string/zipball/6c9e1108041b5dce21a9a4984b531c4923aa9ec4", + "reference": "6c9e1108041b5dce21a9a4984b531c4923aa9ec4", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-intl-grapheme": "^1.33", + "symfony/polyfill-intl-normalizer": "^1.0", + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -4851,7 +4852,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.4" + "source": "https://github.com/symfony/string/tree/v8.0.6" }, "funding": [ { @@ -4871,20 +4872,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T14:36:48+00:00" + "time": "2026-02-09T10:14:57+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", "shasum": "" }, "require": { @@ -4913,7 +4914,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" }, "funding": [ { @@ -4921,7 +4922,7 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], From 6fe62d2251cf61601059541467032ebcd60f2dee Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Wed, 4 Mar 2026 12:38:45 -0500 Subject: [PATCH 03/11] Fix package version for PHP SDK and add changelog entry --- CHANGELOG.md | 9 +++++++++ README.md | 2 +- composer.json | 2 +- lib/Configuration.php | 4 ++-- lib/ObjectSerializer.php | 8 ++++++-- test/Api/DefaultApiTest.php | 2 +- 6 files changed, 20 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b344bb8..86c3c69 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 + + +## [5.3.1] - 2026-03-04 + +### Added + +- New parameters for fetching recordings (start time and end time) +- Audio Streaming feature + ## [5.3.0] - 2025-10-21 diff --git a/README.md b/README.md index d4e2a16..9e8310a 100644 --- a/README.md +++ b/README.md @@ -374,6 +374,6 @@ support@freeclimb.com This PHP package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: - API version: `1.0.0` - - Package version: `5.2.1` + - Package version: `5.3.1` - Generator version: `7.9.0` - Build package: `org.openapitools.codegen.languages.PhpClientCodegen` diff --git a/composer.json b/composer.json index 39196ff..c4bb1a6 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "freeclimbapi/php-sdk", - "version": "5.2.1", + "version": "5.3.1", "description": "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.", "keywords": [ "openapitools", diff --git a/lib/Configuration.php b/lib/Configuration.php index 206a281..cda77dd 100644 --- a/lib/Configuration.php +++ b/lib/Configuration.php @@ -102,7 +102,7 @@ class Configuration * * @var string */ - protected $userAgent = 'OpenAPI-Generator/5.2.1/PHP'; + protected $userAgent = 'OpenAPI-Generator/5.3.1/PHP'; /** * Debug switch (default set to false) @@ -435,7 +435,7 @@ public static function toDebugReport() $report .= ' OS: ' . php_uname() . PHP_EOL; $report .= ' PHP Version: ' . PHP_VERSION . PHP_EOL; $report .= ' The version of the OpenAPI document: 1.0.0' . PHP_EOL; - $report .= ' SDK Package Version: 5.2.1' . PHP_EOL; + $report .= ' SDK Package Version: 5.3.1' . PHP_EOL; $report .= ' Temp Folder Path: ' . self::getDefaultConfiguration()->getTempFolderPath() . PHP_EOL; return $report; diff --git a/lib/ObjectSerializer.php b/lib/ObjectSerializer.php index b3853cd..d7c00c3 100644 --- a/lib/ObjectSerializer.php +++ b/lib/ObjectSerializer.php @@ -593,8 +593,12 @@ public static function buildQuery(array $params, $encoding = PHP_QUERY_RFC3986): } $castBool = Configuration::BOOLEAN_FORMAT_INT === Configuration::getDefaultConfiguration()->getBooleanFormatForQueryString() - ? function ($v) { return (int) $v; } - : function ($v) { return $v ? 'true' : 'false'; }; + ? function ($v) { + return (int) $v; + } + : function ($v) { + return $v ? 'true' : 'false'; + }; $qs = ''; foreach ($params as $k => $v) { diff --git a/test/Api/DefaultApiTest.php b/test/Api/DefaultApiTest.php index a5e3af0..5d10f17 100644 --- a/test/Api/DefaultApiTest.php +++ b/test/Api/DefaultApiTest.php @@ -2285,7 +2285,7 @@ public function testGetNextPageListSmsMessages() $response = static::$apiInstance->listSmsMessages($this->to_listSmsMessages_test_value(), $this->from_listSmsMessages_test_value(), $this->begin_time_listSmsMessages_test_value(), $this->end_time_listSmsMessages_test_value(), $this->direction_listSmsMessages_test_value(), $this->campaign_id_listSmsMessages_test_value(), $this->brand_id_listSmsMessages_test_value(), $this->is10_dlc_listSmsMessages_test_value()); $response['next_page_uri'] = '/Accounts/{accountId}/Messages?cursor=1'; $nextPageResponse = static::$apiInstance->getNextPage($response); - $this->assertInstanceOf('\FreeClimb\Api\Model\MessagesList', $nextPageResponse); + $this->assertInstanceOf('\FreeClimb\Api\Model\MessagesList',$nextPageResponse); } } From 3df4733e29d2436ade6e7f14b21f9710f282fdaf Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Wed, 4 Mar 2026 12:46:42 -0500 Subject: [PATCH 04/11] Update composer lock file --- composer.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.lock b/composer.lock index 008e295..9a48411 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5b1631e31a89f00d8405bfea1c976616", + "content-hash": "30cdbcf1463d1c364022892c953ed261", "packages": [ { "name": "guzzlehttp/guzzle", From 21c5ceed6e0e268daf6ec7eddbb5ef846c7067fa Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Fri, 6 Mar 2026 09:07:31 -0500 Subject: [PATCH 05/11] Add new changes from latest spec updates --- .openapi-generator/FILES | 3 + README.md | 1 + docs/Api/DefaultApi.md | 6 +- docs/Model/AvailableNumber.md | 1 + docs/Model/CallResult.md | 9 +- docs/Model/CallResultAllOfSubresourceUris.md | 10 + docs/Model/QueueResult.md | 1 + lib/Api/DefaultApi.php | 38 +- lib/Model/AvailableNumber.php | 41 ++ lib/Model/CallResult.php | 293 +++++++++++- lib/Model/CallResultAllOfSubresourceUris.php | 447 ++++++++++++++++++ lib/Model/QueueResult.php | 41 ++ openapi.json | 72 ++- test/Api/DefaultApiTest.php | 10 +- test/Model/AvailableNumberTest.php | 8 + .../CallResultAllOfSubresourceUrisTest.php | 92 ++++ test/Model/CallResultTest.php | 45 ++ test/Model/QueueResultTest.php | 10 + 18 files changed, 1110 insertions(+), 18 deletions(-) create mode 100644 docs/Model/CallResultAllOfSubresourceUris.md create mode 100644 lib/Model/CallResultAllOfSubresourceUris.php create mode 100644 test/Model/CallResultAllOfSubresourceUrisTest.php diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 187d492..2bc81b2 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -26,6 +26,7 @@ docs/Model/CallDirection.md docs/Model/CallEndedReason.md docs/Model/CallList.md docs/Model/CallResult.md +docs/Model/CallResultAllOfSubresourceUris.md docs/Model/CallStatus.md docs/Model/CallStatusWebhook.md docs/Model/Capabilities.md @@ -187,6 +188,7 @@ lib/Model/CallDirection.php lib/Model/CallEndedReason.php lib/Model/CallList.php lib/Model/CallResult.php +lib/Model/CallResultAllOfSubresourceUris.php lib/Model/CallStatus.php lib/Model/CallStatusWebhook.php lib/Model/Capabilities.php @@ -346,6 +348,7 @@ test/Model/CallControlWebhookTest.php test/Model/CallDirectionTest.php test/Model/CallEndedReasonTest.php test/Model/CallListTest.php +test/Model/CallResultAllOfSubresourceUrisTest.php test/Model/CallResultTest.php test/Model/CallStatusTest.php test/Model/CallStatusWebhookTest.php diff --git a/README.md b/README.md index 9e8310a..c81dfe3 100644 --- a/README.md +++ b/README.md @@ -214,6 +214,7 @@ Class | Method | HTTP request | Description - [CallEndedReason](docs/Model/CallEndedReason.md) - [CallList](docs/Model/CallList.md) - [CallResult](docs/Model/CallResult.md) +- [CallResultAllOfSubresourceUris](docs/Model/CallResultAllOfSubresourceUris.md) - [CallStatus](docs/Model/CallStatus.md) - [CallStatusWebhook](docs/Model/CallStatusWebhook.md) - [Capabilities](docs/Model/Capabilities.md) diff --git a/docs/Api/DefaultApi.md b/docs/Api/DefaultApi.md index 908d152..f104d58 100644 --- a/docs/Api/DefaultApi.md +++ b/docs/Api/DefaultApi.md @@ -2798,7 +2798,7 @@ try { ## `listCalls()` ```php -listCalls($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max): \FreeClimb\Api\Model\CallList +listCalls($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $web_rtc): \FreeClimb\Api\Model\CallList ``` List Calls @@ -2833,9 +2833,10 @@ $parent_call_id = 'parent_call_id_example'; // string | Only show Calls spawned $application_id = array('application_id_example'); // string[] | Only show calls belonging to the given applicationId. This parameter can be repeated to return calls from multiple Applications. $risk_score_min = 56; // int | The minimum riskScore that should be included in the list. $risk_score_max = 56; // int | The maximum riskScore that should be included in the list. +$web_rtc = false; // bool | Only show Calls that were originated via WebRTC. try { - $result = $apiInstance->listCalls($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max); + $result = $apiInstance->listCalls($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $web_rtc); print_r($result); } catch (Exception $e) { echo 'Exception when calling DefaultApi->listCalls: ', $e->getMessage(), PHP_EOL; @@ -2857,6 +2858,7 @@ try { | **application_id** | [**string[]**](../Model/string.md)| Only show calls belonging to the given applicationId. This parameter can be repeated to return calls from multiple Applications. | [optional] | | **risk_score_min** | **int**| The minimum riskScore that should be included in the list. | [optional] | | **risk_score_max** | **int**| The maximum riskScore that should be included in the list. | [optional] | +| **web_rtc** | **bool**| Only show Calls that were originated via WebRTC. | [optional] [default to false] | ### Return type diff --git a/docs/Model/AvailableNumber.md b/docs/Model/AvailableNumber.md index c704296..1ecf363 100644 --- a/docs/Model/AvailableNumber.md +++ b/docs/Model/AvailableNumber.md @@ -7,6 +7,7 @@ Name | Type | Description | Notes **capabilities** | [**\FreeClimb\Api\Model\Capabilities**](Capabilities.md) | | [optional] **campaign_id** | **string** | The campaign ID generated by the campaign registry | [optional] **phone_number** | **string** | The phone number, in E.164 format (+ country code and phone number: +18003608245). | [optional] +**alias** | **string** | A nicely-formatted version of the phone number. | [optional] **region** | **string** | The state or province of this phone number. | [optional] **country** | **string** | The country of this phone number. | [optional] diff --git a/docs/Model/CallResult.md b/docs/Model/CallResult.md index 07ea447..ecc45bd 100644 --- a/docs/Model/CallResult.md +++ b/docs/Model/CallResult.md @@ -8,6 +8,8 @@ Name | Type | Description | Notes **date_created** | **string** | The date that this resource was created (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). | [optional] **date_updated** | **string** | The date that this resource was last updated (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). | [optional] **revision** | **int** | Revision count for the resource. This count is set to 1 on creation and is incremented every time it is updated. | [optional] +**date_created_iso** | **\DateTime** | The date that this resource was created in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). | [optional] +**date_updated_iso** | **\DateTime** | The date that this resource was last updated in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). | [optional] **call_id** | **string** | String that uniquely identifies this Call resource. | [optional] **parent_call_id** | **string** | ID of the Call that created this leg (child Call). | [optional] **account_id** | **string** | ID of the account that owns this Call. | [optional] @@ -16,14 +18,19 @@ Name | Type | Description | Notes **phone_number_id** | **string** | If the Call was inbound, this is the ID of the IncomingPhoneNumber that received the Call (DNIS). If the Call was outbound, this is the ID of the phone number from which the Call was placed (ANI). | [optional] **status** | [**\FreeClimb\Api\Model\CallStatus**](CallStatus.md) | | [optional] **start_time** | **string** | 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. | [optional] +**start_time_iso** | **\DateTime** | 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. | [optional] **connect_time** | **string** | 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. | [optional] +**connect_time_iso** | **\DateTime** | 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. | [optional] **end_time** | **string** | 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. | [optional] +**end_time_iso** | **\DateTime** | 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. | [optional] **duration** | **int** | Total length of the Call in seconds. Measures time between startTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls. | [optional] **connect_duration** | **int** | 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. | [optional] **audio_stream_duration** | **int** | 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. | [optional] **direction** | [**\FreeClimb\Api\Model\CallDirection**](CallDirection.md) | | [optional] **answered_by** | [**\FreeClimb\Api\Model\AnsweredBy**](AnsweredBy.md) | | [optional] -**subresource_uris** | **object** | The list of subresources for this Call. These include things like logs and recordings associated with the Call. | [optional] +**caller_name** | **string** | The caller ID name (CNAM) for this Call. Empty if unavailable. | [optional] +**web_rtc** | **bool** | Indicates whether this Call was initiated via WebRTC. | [optional] +**subresource_uris** | [**\FreeClimb\Api\Model\CallResultAllOfSubresourceUris**](CallResultAllOfSubresourceUris.md) | | [optional] **application_id** | **string** | ApplicationId associated with the Call. | [optional] [[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/docs/Model/CallResultAllOfSubresourceUris.md b/docs/Model/CallResultAllOfSubresourceUris.md new file mode 100644 index 0000000..39bc698 --- /dev/null +++ b/docs/Model/CallResultAllOfSubresourceUris.md @@ -0,0 +1,10 @@ +# # CallResultAllOfSubresourceUris + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**logs** | **string** | The URI for the logs associated with this Call. | [optional] +**recordings** | **string** | The URI for the recordings associated with this Call. | [optional] + +[[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/docs/Model/QueueResult.md b/docs/Model/QueueResult.md index 93673a9..4705c45 100644 --- a/docs/Model/QueueResult.md +++ b/docs/Model/QueueResult.md @@ -14,6 +14,7 @@ Name | Type | Description | Notes **max_size** | **int** | The maximum number of Calls permitted in the Queue. Default is 100. Maximum is 1000. | [optional] **current_size** | **int** | Count of Calls currently in the Queue. | [optional] **average_queue_removal_time** | **int** | The average amount of time (in seconds) for a call to be removed from the queue. | [optional] +**average_wait_time** | **int** | The average wait time (in seconds) of all Calls in the Queue. | [optional] **subresource_uris** | **object** | List of subresources for this Queue (which includes Queue members). | [optional] [[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/lib/Api/DefaultApi.php b/lib/Api/DefaultApi.php index 1b0f22c..f8ff0aa 100644 --- a/lib/Api/DefaultApi.php +++ b/lib/Api/DefaultApi.php @@ -15559,15 +15559,17 @@ public function listCallRecordingsRequest($call_id, $date_created = null, $start * @param int $risk_score_max The maximum riskScore that should be included in the list. (optional) + * @param bool $web_rtc Only show Calls that were originated via WebRTC. (optional, default to false) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listCalls'] to see the possible values for this operation * * @throws \FreeClimb\Api\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return \FreeClimb\Api\Model\CallList */ - public function listCalls($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) + public function listCalls($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, $web_rtc = false, string $contentType = self::contentTypes['listCalls'][0]) { - list($response) = $this->listCallsWithHttpInfo($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType); + list($response) = $this->listCallsWithHttpInfo($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $web_rtc, $contentType); return $response; } /** @@ -15598,15 +15600,17 @@ public function listCalls($used_audio_stream = false, $active = false, $to = nul * @param int $risk_score_max The maximum riskScore that should be included in the list. (optional) + * @param bool $web_rtc Only show Calls that were originated via WebRTC. (optional, default to false) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listCalls'] to see the possible values for this operation * * @throws \FreeClimb\Api\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return array of \FreeClimb\Api\Model\CallList, HTTP status code, HTTP response headers (array of strings) */ - public function listCallsWithHttpInfo($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) + public function listCallsWithHttpInfo($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, $web_rtc = false, string $contentType = self::contentTypes['listCalls'][0]) { - $request = $this->listCallsRequest($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType); + $request = $this->listCallsRequest($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $web_rtc, $contentType); try { $options = $this->createHttpClientOption(); @@ -15745,14 +15749,16 @@ public function listCallsWithHttpInfo($used_audio_stream = false, $active = fals * @param int $risk_score_max The maximum riskScore that should be included in the list. (optional) + * @param bool $web_rtc Only show Calls that were originated via WebRTC. (optional, default to false) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listCalls'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function listCallsAsync($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) + public function listCallsAsync($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, $web_rtc = false, string $contentType = self::contentTypes['listCalls'][0]) { - return $this->listCallsAsyncWithHttpInfo($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType) + return $this->listCallsAsyncWithHttpInfo($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $web_rtc, $contentType) ->then( function ($response) { return $response[0]; @@ -15788,15 +15794,17 @@ function ($response) { * @param int $risk_score_max The maximum riskScore that should be included in the list. (optional) + * @param bool $web_rtc Only show Calls that were originated via WebRTC. (optional, default to false) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listCalls'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function listCallsAsyncWithHttpInfo($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) + public function listCallsAsyncWithHttpInfo($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, $web_rtc = false, string $contentType = self::contentTypes['listCalls'][0]) { $returnType = '\FreeClimb\Api\Model\CallList'; - $request = $this->listCallsRequest($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $contentType); + $request = $this->listCallsRequest($used_audio_stream, $active, $to, $from, $status, $start_time, $end_time, $parent_call_id, $application_id, $risk_score_min, $risk_score_max, $web_rtc, $contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -15860,12 +15868,14 @@ function ($exception) { * @param int $risk_score_max The maximum riskScore that should be included in the list. (optional) + * @param bool $web_rtc Only show Calls that were originated via WebRTC. (optional, default to false) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['listCalls'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function listCallsRequest($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, string $contentType = self::contentTypes['listCalls'][0]) + public function listCallsRequest($used_audio_stream = false, $active = false, $to = null, $from = null, $status = null, $start_time = null, $end_time = null, $parent_call_id = null, $application_id = null, $risk_score_min = null, $risk_score_max = null, $web_rtc = false, string $contentType = self::contentTypes['listCalls'][0]) { $account_id = $this->config->getUsername(); @@ -15885,6 +15895,7 @@ public function listCallsRequest($used_audio_stream = false, $active = false, $t + $resourcePath = '/Accounts/{accountId}/Calls'; $formParams = []; $queryParams = []; @@ -15991,6 +16002,15 @@ public function listCallsRequest($used_audio_stream = false, $active = false, $t true, // explode false // required ) ?? []); + // query params + $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue( + $web_rtc, + 'webRTC', // param base name + 'boolean', // openApiType + 'form', // style + true, // explode + false // required + ) ?? []); // path params diff --git a/lib/Model/AvailableNumber.php b/lib/Model/AvailableNumber.php index 6b0d6ff..e864856 100644 --- a/lib/Model/AvailableNumber.php +++ b/lib/Model/AvailableNumber.php @@ -62,6 +62,7 @@ class AvailableNumber implements ModelInterface, ArrayAccess, \JsonSerializable 'capabilities' => '\FreeClimb\Api\Model\Capabilities', 'campaign_id' => 'string', 'phone_number' => 'string', + 'alias' => 'string', 'region' => 'string', 'country' => 'string' ]; @@ -77,6 +78,7 @@ class AvailableNumber implements ModelInterface, ArrayAccess, \JsonSerializable 'capabilities' => null, 'campaign_id' => null, 'phone_number' => null, + 'alias' => null, 'region' => null, 'country' => null ]; @@ -90,6 +92,7 @@ class AvailableNumber implements ModelInterface, ArrayAccess, \JsonSerializable 'capabilities' => false, 'campaign_id' => true, 'phone_number' => true, + 'alias' => true, 'region' => true, 'country' => true ]; @@ -183,6 +186,7 @@ public function isNullableSetToNull(string $property): bool 'capabilities' => 'capabilities', 'campaign_id' => 'campaignId', 'phone_number' => 'phoneNumber', + 'alias' => 'alias', 'region' => 'region', 'country' => 'country' ]; @@ -196,6 +200,7 @@ public function isNullableSetToNull(string $property): bool 'capabilities' => 'setCapabilities', 'campaign_id' => 'setCampaignId', 'phone_number' => 'setPhoneNumber', + 'alias' => 'setAlias', 'region' => 'setRegion', 'country' => 'setCountry' ]; @@ -209,6 +214,7 @@ public function isNullableSetToNull(string $property): bool 'capabilities' => 'getCapabilities', 'campaign_id' => 'getCampaignId', 'phone_number' => 'getPhoneNumber', + 'alias' => 'getAlias', 'region' => 'getRegion', 'country' => 'getCountry' ]; @@ -273,6 +279,7 @@ public function __construct(?array $data = null) $this->setIfExists('capabilities', $data ?? [], null); $this->setIfExists('campaign_id', $data ?? [], null); $this->setIfExists('phone_number', $data ?? [], null); + $this->setIfExists('alias', $data ?? [], null); $this->setIfExists('region', $data ?? [], null); $this->setIfExists('country', $data ?? [], null); } @@ -414,6 +421,40 @@ public function setPhoneNumber($phone_number) return $this; } + /** + * Gets alias + * + * @return string|null + */ + public function getAlias() + { + return $this->container['alias']; + } + + /** + * Sets alias + * + * @param string|null $alias A nicely-formatted version of the phone number. + * + * @return self + */ + public function setAlias($alias) + { + if (is_null($alias)) { + array_push($this->openAPINullablesSetToNull, 'alias'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('alias', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['alias'] = $alias; + + return $this; + } + /** * Gets region * diff --git a/lib/Model/CallResult.php b/lib/Model/CallResult.php index b69f9a2..f95dec6 100644 --- a/lib/Model/CallResult.php +++ b/lib/Model/CallResult.php @@ -63,6 +63,8 @@ class CallResult implements ModelInterface, ArrayAccess, \JsonSerializable 'date_created' => 'string', 'date_updated' => 'string', 'revision' => 'int', + 'date_created_iso' => '\DateTime', + 'date_updated_iso' => '\DateTime', 'call_id' => 'string', 'parent_call_id' => 'string', 'account_id' => 'string', @@ -71,14 +73,19 @@ class CallResult implements ModelInterface, ArrayAccess, \JsonSerializable 'phone_number_id' => 'string', 'status' => '\FreeClimb\Api\Model\CallStatus', 'start_time' => 'string', + 'start_time_iso' => '\DateTime', 'connect_time' => 'string', + 'connect_time_iso' => '\DateTime', 'end_time' => 'string', + 'end_time_iso' => '\DateTime', 'duration' => 'int', 'connect_duration' => 'int', 'audio_stream_duration' => 'int', 'direction' => '\FreeClimb\Api\Model\CallDirection', 'answered_by' => '\FreeClimb\Api\Model\AnsweredBy', - 'subresource_uris' => 'object', + 'caller_name' => 'string', + 'web_rtc' => 'bool', + 'subresource_uris' => '\FreeClimb\Api\Model\CallResultAllOfSubresourceUris', 'application_id' => 'string' ]; @@ -94,6 +101,8 @@ class CallResult implements ModelInterface, ArrayAccess, \JsonSerializable 'date_created' => null, 'date_updated' => null, 'revision' => null, + 'date_created_iso' => 'date-time', + 'date_updated_iso' => 'date-time', 'call_id' => null, 'parent_call_id' => null, 'account_id' => null, @@ -102,13 +111,18 @@ class CallResult implements ModelInterface, ArrayAccess, \JsonSerializable 'phone_number_id' => null, 'status' => null, 'start_time' => null, + 'start_time_iso' => 'date-time', 'connect_time' => null, + 'connect_time_iso' => 'date-time', 'end_time' => null, + 'end_time_iso' => 'date-time', 'duration' => null, 'connect_duration' => null, 'audio_stream_duration' => null, 'direction' => null, 'answered_by' => null, + 'caller_name' => null, + 'web_rtc' => null, 'subresource_uris' => null, 'application_id' => null ]; @@ -123,6 +137,8 @@ class CallResult implements ModelInterface, ArrayAccess, \JsonSerializable 'date_created' => false, 'date_updated' => false, 'revision' => false, + 'date_created_iso' => true, + 'date_updated_iso' => true, 'call_id' => true, 'parent_call_id' => true, 'account_id' => true, @@ -131,13 +147,18 @@ class CallResult implements ModelInterface, ArrayAccess, \JsonSerializable 'phone_number_id' => true, 'status' => true, 'start_time' => true, + 'start_time_iso' => true, 'connect_time' => true, + 'connect_time_iso' => true, 'end_time' => true, + 'end_time_iso' => true, 'duration' => true, 'connect_duration' => true, 'audio_stream_duration' => true, 'direction' => true, 'answered_by' => true, + 'caller_name' => true, + 'web_rtc' => true, 'subresource_uris' => true, 'application_id' => true ]; @@ -232,6 +253,8 @@ public function isNullableSetToNull(string $property): bool 'date_created' => 'dateCreated', 'date_updated' => 'dateUpdated', 'revision' => 'revision', + 'date_created_iso' => 'dateCreatedISO', + 'date_updated_iso' => 'dateUpdatedISO', 'call_id' => 'callId', 'parent_call_id' => 'parentCallId', 'account_id' => 'accountId', @@ -240,13 +263,18 @@ public function isNullableSetToNull(string $property): bool 'phone_number_id' => 'phoneNumberId', 'status' => 'status', 'start_time' => 'startTime', + 'start_time_iso' => 'startTimeISO', 'connect_time' => 'connectTime', + 'connect_time_iso' => 'connectTimeISO', 'end_time' => 'endTime', + 'end_time_iso' => 'endTimeISO', 'duration' => 'duration', 'connect_duration' => 'connectDuration', 'audio_stream_duration' => 'audioStreamDuration', 'direction' => 'direction', 'answered_by' => 'answeredBy', + 'caller_name' => 'callerName', + 'web_rtc' => 'webRTC', 'subresource_uris' => 'subresourceUris', 'application_id' => 'applicationId' ]; @@ -261,6 +289,8 @@ public function isNullableSetToNull(string $property): bool 'date_created' => 'setDateCreated', 'date_updated' => 'setDateUpdated', 'revision' => 'setRevision', + 'date_created_iso' => 'setDateCreatedIso', + 'date_updated_iso' => 'setDateUpdatedIso', 'call_id' => 'setCallId', 'parent_call_id' => 'setParentCallId', 'account_id' => 'setAccountId', @@ -269,13 +299,18 @@ public function isNullableSetToNull(string $property): bool 'phone_number_id' => 'setPhoneNumberId', 'status' => 'setStatus', 'start_time' => 'setStartTime', + 'start_time_iso' => 'setStartTimeIso', 'connect_time' => 'setConnectTime', + 'connect_time_iso' => 'setConnectTimeIso', 'end_time' => 'setEndTime', + 'end_time_iso' => 'setEndTimeIso', 'duration' => 'setDuration', 'connect_duration' => 'setConnectDuration', 'audio_stream_duration' => 'setAudioStreamDuration', 'direction' => 'setDirection', 'answered_by' => 'setAnsweredBy', + 'caller_name' => 'setCallerName', + 'web_rtc' => 'setWebRtc', 'subresource_uris' => 'setSubresourceUris', 'application_id' => 'setApplicationId' ]; @@ -290,6 +325,8 @@ public function isNullableSetToNull(string $property): bool 'date_created' => 'getDateCreated', 'date_updated' => 'getDateUpdated', 'revision' => 'getRevision', + 'date_created_iso' => 'getDateCreatedIso', + 'date_updated_iso' => 'getDateUpdatedIso', 'call_id' => 'getCallId', 'parent_call_id' => 'getParentCallId', 'account_id' => 'getAccountId', @@ -298,13 +335,18 @@ public function isNullableSetToNull(string $property): bool 'phone_number_id' => 'getPhoneNumberId', 'status' => 'getStatus', 'start_time' => 'getStartTime', + 'start_time_iso' => 'getStartTimeIso', 'connect_time' => 'getConnectTime', + 'connect_time_iso' => 'getConnectTimeIso', 'end_time' => 'getEndTime', + 'end_time_iso' => 'getEndTimeIso', 'duration' => 'getDuration', 'connect_duration' => 'getConnectDuration', 'audio_stream_duration' => 'getAudioStreamDuration', 'direction' => 'getDirection', 'answered_by' => 'getAnsweredBy', + 'caller_name' => 'getCallerName', + 'web_rtc' => 'getWebRtc', 'subresource_uris' => 'getSubresourceUris', 'application_id' => 'getApplicationId' ]; @@ -370,6 +412,8 @@ public function __construct(?array $data = null) $this->setIfExists('date_created', $data ?? [], null); $this->setIfExists('date_updated', $data ?? [], null); $this->setIfExists('revision', $data ?? [], null); + $this->setIfExists('date_created_iso', $data ?? [], null); + $this->setIfExists('date_updated_iso', $data ?? [], null); $this->setIfExists('call_id', $data ?? [], null); $this->setIfExists('parent_call_id', $data ?? [], null); $this->setIfExists('account_id', $data ?? [], null); @@ -378,13 +422,18 @@ public function __construct(?array $data = null) $this->setIfExists('phone_number_id', $data ?? [], null); $this->setIfExists('status', $data ?? [], null); $this->setIfExists('start_time', $data ?? [], null); + $this->setIfExists('start_time_iso', $data ?? [], null); $this->setIfExists('connect_time', $data ?? [], null); + $this->setIfExists('connect_time_iso', $data ?? [], null); $this->setIfExists('end_time', $data ?? [], null); + $this->setIfExists('end_time_iso', $data ?? [], null); $this->setIfExists('duration', $data ?? [], null); $this->setIfExists('connect_duration', $data ?? [], null); $this->setIfExists('audio_stream_duration', $data ?? [], null); $this->setIfExists('direction', $data ?? [], null); $this->setIfExists('answered_by', $data ?? [], null); + $this->setIfExists('caller_name', $data ?? [], null); + $this->setIfExists('web_rtc', $data ?? [], null); $this->setIfExists('subresource_uris', $data ?? [], null); $this->setIfExists('application_id', $data ?? [], null); } @@ -539,6 +588,74 @@ public function setRevision($revision) return $this; } + /** + * Gets date_created_iso + * + * @return \DateTime|null + */ + public function getDateCreatedIso() + { + return $this->container['date_created_iso']; + } + + /** + * Sets date_created_iso + * + * @param \DateTime|null $date_created_iso The date that this resource was created in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). + * + * @return self + */ + public function setDateCreatedIso($date_created_iso) + { + if (is_null($date_created_iso)) { + array_push($this->openAPINullablesSetToNull, 'date_created_iso'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('date_created_iso', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['date_created_iso'] = $date_created_iso; + + return $this; + } + + /** + * Gets date_updated_iso + * + * @return \DateTime|null + */ + public function getDateUpdatedIso() + { + return $this->container['date_updated_iso']; + } + + /** + * Sets date_updated_iso + * + * @param \DateTime|null $date_updated_iso The date that this resource was last updated in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). + * + * @return self + */ + public function setDateUpdatedIso($date_updated_iso) + { + if (is_null($date_updated_iso)) { + array_push($this->openAPINullablesSetToNull, 'date_updated_iso'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('date_updated_iso', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['date_updated_iso'] = $date_updated_iso; + + return $this; + } + /** * Gets call_id * @@ -811,6 +928,40 @@ public function setStartTime($start_time) return $this; } + /** + * Gets start_time_iso + * + * @return \DateTime|null + */ + public function getStartTimeIso() + { + return $this->container['start_time_iso']; + } + + /** + * Sets start_time_iso + * + * @param \DateTime|null $start_time_iso 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. + * + * @return self + */ + public function setStartTimeIso($start_time_iso) + { + if (is_null($start_time_iso)) { + array_push($this->openAPINullablesSetToNull, 'start_time_iso'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('start_time_iso', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['start_time_iso'] = $start_time_iso; + + return $this; + } + /** * Gets connect_time * @@ -845,6 +996,40 @@ public function setConnectTime($connect_time) return $this; } + /** + * Gets connect_time_iso + * + * @return \DateTime|null + */ + public function getConnectTimeIso() + { + return $this->container['connect_time_iso']; + } + + /** + * Sets connect_time_iso + * + * @param \DateTime|null $connect_time_iso 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. + * + * @return self + */ + public function setConnectTimeIso($connect_time_iso) + { + if (is_null($connect_time_iso)) { + array_push($this->openAPINullablesSetToNull, 'connect_time_iso'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('connect_time_iso', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['connect_time_iso'] = $connect_time_iso; + + return $this; + } + /** * Gets end_time * @@ -879,6 +1064,40 @@ public function setEndTime($end_time) return $this; } + /** + * Gets end_time_iso + * + * @return \DateTime|null + */ + public function getEndTimeIso() + { + return $this->container['end_time_iso']; + } + + /** + * Sets end_time_iso + * + * @param \DateTime|null $end_time_iso 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. + * + * @return self + */ + public function setEndTimeIso($end_time_iso) + { + if (is_null($end_time_iso)) { + array_push($this->openAPINullablesSetToNull, 'end_time_iso'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('end_time_iso', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['end_time_iso'] = $end_time_iso; + + return $this; + } + /** * Gets duration * @@ -1049,10 +1268,78 @@ public function setAnsweredBy($answered_by) return $this; } + /** + * Gets caller_name + * + * @return string|null + */ + public function getCallerName() + { + return $this->container['caller_name']; + } + + /** + * Sets caller_name + * + * @param string|null $caller_name The caller ID name (CNAM) for this Call. Empty if unavailable. + * + * @return self + */ + public function setCallerName($caller_name) + { + if (is_null($caller_name)) { + array_push($this->openAPINullablesSetToNull, 'caller_name'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('caller_name', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['caller_name'] = $caller_name; + + return $this; + } + + /** + * Gets web_rtc + * + * @return bool|null + */ + public function getWebRtc() + { + return $this->container['web_rtc']; + } + + /** + * Sets web_rtc + * + * @param bool|null $web_rtc Indicates whether this Call was initiated via WebRTC. + * + * @return self + */ + public function setWebRtc($web_rtc) + { + if (is_null($web_rtc)) { + array_push($this->openAPINullablesSetToNull, 'web_rtc'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('web_rtc', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['web_rtc'] = $web_rtc; + + return $this; + } + /** * Gets subresource_uris * - * @return object|null + * @return \FreeClimb\Api\Model\CallResultAllOfSubresourceUris|null */ public function getSubresourceUris() { @@ -1062,7 +1349,7 @@ public function getSubresourceUris() /** * Sets subresource_uris * - * @param object|null $subresource_uris The list of subresources for this Call. These include things like logs and recordings associated with the Call. + * @param \FreeClimb\Api\Model\CallResultAllOfSubresourceUris|null $subresource_uris subresource_uris * * @return self */ diff --git a/lib/Model/CallResultAllOfSubresourceUris.php b/lib/Model/CallResultAllOfSubresourceUris.php new file mode 100644 index 0000000..493efb9 --- /dev/null +++ b/lib/Model/CallResultAllOfSubresourceUris.php @@ -0,0 +1,447 @@ + + */ +class CallResultAllOfSubresourceUris implements ModelInterface, ArrayAccess, \JsonSerializable +{ + public const DISCRIMINATOR = null; + + /** + * The original name of the model. + * + * @var string + */ + protected static $openAPIModelName = 'CallResult_allOf_subresourceUris'; + + /** + * Array of property to type mappings. Used for (de)serialization + * + * @var string[] + */ + protected static $openAPITypes = [ + 'logs' => 'string', + 'recordings' => 'string' + ]; + + /** + * Array of property to format mappings. Used for (de)serialization + * + * @var string[] + * @phpstan-var array + * @psalm-var array + */ + protected static $openAPIFormats = [ + 'logs' => null, + 'recordings' => null + ]; + + /** + * Array of nullable properties. Used for (de)serialization + * + * @var boolean[] + */ + protected static array $openAPINullables = [ + 'logs' => false, + 'recordings' => false + ]; + + /** + * If a nullable field gets set to null, insert it here + * + * @var boolean[] + */ + protected array $openAPINullablesSetToNull = []; + + /** + * Array of property to type mappings. Used for (de)serialization + * + * @return array + */ + public static function openAPITypes() + { + return self::$openAPITypes; + } + + /** + * Array of property to format mappings. Used for (de)serialization + * + * @return array + */ + public static function openAPIFormats() + { + return self::$openAPIFormats; + } + + /** + * Array of nullable properties + * + * @return array + */ + protected static function openAPINullables(): array + { + return self::$openAPINullables; + } + + /** + * Array of nullable field names deliberately set to null + * + * @return boolean[] + */ + private function getOpenAPINullablesSetToNull(): array + { + return $this->openAPINullablesSetToNull; + } + + /** + * Setter - Array of nullable field names deliberately set to null + * + * @param boolean[] $openAPINullablesSetToNull + */ + private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void + { + $this->openAPINullablesSetToNull = $openAPINullablesSetToNull; + } + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool + { + return self::openAPINullables()[$property] ?? false; + } + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool + { + return in_array($property, $this->getOpenAPINullablesSetToNull(), true); + } + + /** + * Array of attributes where the key is the local name, + * and the value is the original name + * + * @var string[] + */ + protected static $attributeMap = [ + 'logs' => 'logs', + 'recordings' => 'recordings' + ]; + + /** + * Array of attributes to setter functions (for deserialization of responses) + * + * @var string[] + */ + protected static $setters = [ + 'logs' => 'setLogs', + 'recordings' => 'setRecordings' + ]; + + /** + * Array of attributes to getter functions (for serialization of requests) + * + * @var string[] + */ + protected static $getters = [ + 'logs' => 'getLogs', + 'recordings' => 'getRecordings' + ]; + + /** + * Array of attributes where the key is the local name, + * and the value is the original name + * + * @return array + */ + public static function attributeMap() + { + return self::$attributeMap; + } + + /** + * Array of attributes to setter functions (for deserialization of responses) + * + * @return array + */ + public static function setters() + { + return self::$setters; + } + + /** + * Array of attributes to getter functions (for serialization of requests) + * + * @return array + */ + public static function getters() + { + return self::$getters; + } + + /** + * The original name of the model. + * + * @return string + */ + public function getModelName() + { + return self::$openAPIModelName; + } + + + /** + * Associative array for storing property values + * + * @var mixed[] + */ + protected $container = []; + + /** + * Constructor + * + * @param mixed[] $data Associated array of property values + * initializing the model + */ + public function __construct(?array $data = null) + { + $this->setIfExists('logs', $data ?? [], null); + $this->setIfExists('recordings', $data ?? [], null); + } + + /** + * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName + * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the + * $this->openAPINullablesSetToNull array + * + * @param string $variableName + * @param array $fields + * @param mixed $defaultValue + */ + private function setIfExists(string $variableName, array $fields, $defaultValue): void + { + if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { + $this->openAPINullablesSetToNull[] = $variableName; + } + + $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; + } + + /** + * Show all the invalid properties with reasons. + * + * @return array invalid properties with reasons + */ + public function listInvalidProperties() + { + $invalidProperties = []; + + return $invalidProperties; + } + + /** + * Validate all the properties in the model + * return true if all passed + * + * @return bool True if all properties are valid + */ + public function valid() + { + return count($this->listInvalidProperties()) === 0; + } + + + /** + * Gets logs + * + * @return string|null + */ + public function getLogs() + { + return $this->container['logs']; + } + + /** + * Sets logs + * + * @param string|null $logs The URI for the logs associated with this Call. + * + * @return self + */ + public function setLogs($logs) + { + if (is_null($logs)) { + throw new \InvalidArgumentException('non-nullable logs cannot be null'); + } + $this->container['logs'] = $logs; + + return $this; + } + + /** + * Gets recordings + * + * @return string|null + */ + public function getRecordings() + { + return $this->container['recordings']; + } + + /** + * Sets recordings + * + * @param string|null $recordings The URI for the recordings associated with this Call. + * + * @return self + */ + public function setRecordings($recordings) + { + if (is_null($recordings)) { + throw new \InvalidArgumentException('non-nullable recordings cannot be null'); + } + $this->container['recordings'] = $recordings; + + return $this; + } + /** + * Returns true if offset exists. False otherwise. + * + * @param integer $offset Offset + * + * @return boolean + */ + public function offsetExists($offset): bool + { + return isset($this->container[$offset]); + } + + /** + * Gets offset. + * + * @param integer $offset Offset + * + * @return mixed|null + */ + #[\ReturnTypeWillChange] + public function offsetGet($offset) + { + return $this->container[$offset] ?? null; + } + + /** + * Sets value based on offset. + * + * @param int|null $offset Offset + * @param mixed $value Value to be set + * + * @return void + */ + public function offsetSet($offset, $value): void + { + if (is_null($offset)) { + $this->container[] = $value; + } else { + $this->container[$offset] = $value; + } + } + + /** + * Unsets offset. + * + * @param integer $offset Offset + * + * @return void + */ + public function offsetUnset($offset): void + { + unset($this->container[$offset]); + } + + /** + * Serializes the object to a value that can be serialized natively by json_encode(). + * @link https://www.php.net/manual/en/jsonserializable.jsonserialize.php + * + * @return mixed Returns data which can be serialized by json_encode(), which is a value + * of any type other than a resource. + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return ObjectSerializer::sanitizeForSerialization($this); + } + + /** + * Gets the string presentation of the object + * + * @return string + */ + public function __toString() + { + return json_encode( + ObjectSerializer::sanitizeForSerialization($this), + JSON_PRETTY_PRINT + ); + } + + /** + * Gets a header-safe presentation of the object + * + * @return string + */ + public function toHeaderValue() + { + return json_encode(ObjectSerializer::sanitizeForSerialization($this)); + } + +} + + diff --git a/lib/Model/QueueResult.php b/lib/Model/QueueResult.php index 1e22f25..def7878 100644 --- a/lib/Model/QueueResult.php +++ b/lib/Model/QueueResult.php @@ -69,6 +69,7 @@ class QueueResult implements ModelInterface, ArrayAccess, \JsonSerializable 'max_size' => 'int', 'current_size' => 'int', 'average_queue_removal_time' => 'int', + 'average_wait_time' => 'int', 'subresource_uris' => 'object' ]; @@ -90,6 +91,7 @@ class QueueResult implements ModelInterface, ArrayAccess, \JsonSerializable 'max_size' => null, 'current_size' => null, 'average_queue_removal_time' => null, + 'average_wait_time' => null, 'subresource_uris' => null ]; @@ -109,6 +111,7 @@ class QueueResult implements ModelInterface, ArrayAccess, \JsonSerializable 'max_size' => true, 'current_size' => true, 'average_queue_removal_time' => true, + 'average_wait_time' => true, 'subresource_uris' => true ]; @@ -208,6 +211,7 @@ public function isNullableSetToNull(string $property): bool 'max_size' => 'maxSize', 'current_size' => 'currentSize', 'average_queue_removal_time' => 'averageQueueRemovalTime', + 'average_wait_time' => 'averageWaitTime', 'subresource_uris' => 'subresourceUris' ]; @@ -227,6 +231,7 @@ public function isNullableSetToNull(string $property): bool 'max_size' => 'setMaxSize', 'current_size' => 'setCurrentSize', 'average_queue_removal_time' => 'setAverageQueueRemovalTime', + 'average_wait_time' => 'setAverageWaitTime', 'subresource_uris' => 'setSubresourceUris' ]; @@ -246,6 +251,7 @@ public function isNullableSetToNull(string $property): bool 'max_size' => 'getMaxSize', 'current_size' => 'getCurrentSize', 'average_queue_removal_time' => 'getAverageQueueRemovalTime', + 'average_wait_time' => 'getAverageWaitTime', 'subresource_uris' => 'getSubresourceUris' ]; @@ -316,6 +322,7 @@ public function __construct(?array $data = null) $this->setIfExists('max_size', $data ?? [], null); $this->setIfExists('current_size', $data ?? [], null); $this->setIfExists('average_queue_removal_time', $data ?? [], null); + $this->setIfExists('average_wait_time', $data ?? [], null); $this->setIfExists('subresource_uris', $data ?? [], null); } @@ -673,6 +680,40 @@ public function setAverageQueueRemovalTime($average_queue_removal_time) return $this; } + /** + * Gets average_wait_time + * + * @return int|null + */ + public function getAverageWaitTime() + { + return $this->container['average_wait_time']; + } + + /** + * Sets average_wait_time + * + * @param int|null $average_wait_time The average wait time (in seconds) of all Calls in the Queue. + * + * @return self + */ + public function setAverageWaitTime($average_wait_time) + { + if (is_null($average_wait_time)) { + array_push($this->openAPINullablesSetToNull, 'average_wait_time'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('average_wait_time', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['average_wait_time'] = $average_wait_time; + + return $this; + } + /** * Gets subresource_uris * diff --git a/openapi.json b/openapi.json index fd9ec40..2e24ec8 100644 --- a/openapi.json +++ b/openapi.json @@ -2935,6 +2935,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.", @@ -3117,6 +3122,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 +3172,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.", @@ -3186,10 +3221,30 @@ "answeredBy": { "$ref": "#/components/schemas/AnsweredBy" }, + "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": { "type": "object", "description": "The list of subresources for this Call. These include things like logs and recordings associated with the Call.", - "nullable": true + "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." + } + } }, "applicationId": { "type": "string", @@ -3858,6 +3913,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).", @@ -6117,6 +6177,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, diff --git a/test/Api/DefaultApiTest.php b/test/Api/DefaultApiTest.php index 5d10f17..d99ae55 100644 --- a/test/Api/DefaultApiTest.php +++ b/test/Api/DefaultApiTest.php @@ -746,6 +746,10 @@ public function end_time_listRecordings_test_value(): string return 'end_time_example'; } public function used_audio_stream_listCalls_test_value(): string + { + return "true"; + } + public function web_rtc_listCalls_test_value(): string { return "true"; } @@ -1559,8 +1563,10 @@ public function testListCalls() //$risk_score_max = $risk_score_max_test_value; + //$web_rtc = $web_rtc_test_value; + - $response = static::$apiInstance->listCalls($this->used_audio_stream_listCalls_test_value(), $this->active_listCalls_test_value(), $this->to_listCalls_test_value(), $this->from_listCalls_test_value(), $this->status_listCalls_test_value(), $this->start_time_listCalls_test_value(), $this->end_time_listCalls_test_value(), $this->parent_call_id_listCalls_test_value(), $this->application_id_listCalls_test_value(), $this->risk_score_min_listCalls_test_value(), $this->risk_score_max_listCalls_test_value()); + $response = static::$apiInstance->listCalls($this->used_audio_stream_listCalls_test_value(), $this->active_listCalls_test_value(), $this->to_listCalls_test_value(), $this->from_listCalls_test_value(), $this->status_listCalls_test_value(), $this->start_time_listCalls_test_value(), $this->end_time_listCalls_test_value(), $this->parent_call_id_listCalls_test_value(), $this->application_id_listCalls_test_value(), $this->risk_score_min_listCalls_test_value(), $this->risk_score_max_listCalls_test_value(), $this->web_rtc_listCalls_test_value()); $this->assertInstanceOf('\FreeClimb\Api\Model\CallList', $response); } @@ -2178,7 +2184,7 @@ public function testGetNextPageListCallRecordings() public function testGetNextPageListCalls() { - $response = static::$apiInstance->listCalls($this->used_audio_stream_listCalls_test_value(), $this->active_listCalls_test_value(), $this->to_listCalls_test_value(), $this->from_listCalls_test_value(), $this->status_listCalls_test_value(), $this->start_time_listCalls_test_value(), $this->end_time_listCalls_test_value(), $this->parent_call_id_listCalls_test_value(), $this->application_id_listCalls_test_value(), $this->risk_score_min_listCalls_test_value(), $this->risk_score_max_listCalls_test_value()); + $response = static::$apiInstance->listCalls($this->used_audio_stream_listCalls_test_value(), $this->active_listCalls_test_value(), $this->to_listCalls_test_value(), $this->from_listCalls_test_value(), $this->status_listCalls_test_value(), $this->start_time_listCalls_test_value(), $this->end_time_listCalls_test_value(), $this->parent_call_id_listCalls_test_value(), $this->application_id_listCalls_test_value(), $this->risk_score_min_listCalls_test_value(), $this->risk_score_max_listCalls_test_value(), $this->web_rtc_listCalls_test_value()); $response['next_page_uri'] = '/Accounts/{accountId}/Calls?cursor=1'; $nextPageResponse = static::$apiInstance->getNextPage($response); $this->assertInstanceOf('\FreeClimb\Api\Model\CallList', $nextPageResponse); diff --git a/test/Model/AvailableNumberTest.php b/test/Model/AvailableNumberTest.php index 3f3a843..2daba17 100644 --- a/test/Model/AvailableNumberTest.php +++ b/test/Model/AvailableNumberTest.php @@ -96,6 +96,14 @@ public function testPropertyPhoneNumber() $this->assertIsString($this->AvailableNumber->getPhoneNumber()); } + public function testPropertyAlias() + { + + $this->AvailableNumber->setAlias('TS'); + $this->assertEquals('TS', $this->AvailableNumber->getAlias()); + $this->assertIsString($this->AvailableNumber->getAlias()); + } + public function testPropertyRegion() { diff --git a/test/Model/CallResultAllOfSubresourceUrisTest.php b/test/Model/CallResultAllOfSubresourceUrisTest.php new file mode 100644 index 0000000..43b9fcc --- /dev/null +++ b/test/Model/CallResultAllOfSubresourceUrisTest.php @@ -0,0 +1,92 @@ +CallResultAllOfSubresourceUris = new \FreeClimb\Api\Model\CallResultAllOfSubresourceUris(); + } + + /** + * Clean up after running each test case + */ + public function tearDown(): void + { + } + + /** + * Clean up after running all test cases + */ + public static function tearDownAfterClass(): void + { + } + + + public function testPropertyLogs() + { + + $this->CallResultAllOfSubresourceUris->setLogs('TS'); + $this->assertEquals('TS', $this->CallResultAllOfSubresourceUris->getLogs()); + $this->assertIsString($this->CallResultAllOfSubresourceUris->getLogs()); + } + + public function testPropertyRecordings() + { + + $this->CallResultAllOfSubresourceUris->setRecordings('TS'); + $this->assertEquals('TS', $this->CallResultAllOfSubresourceUris->getRecordings()); + $this->assertIsString($this->CallResultAllOfSubresourceUris->getRecordings()); + } +} diff --git a/test/Model/CallResultTest.php b/test/Model/CallResultTest.php index bee24d4..ff545bc 100644 --- a/test/Model/CallResultTest.php +++ b/test/Model/CallResultTest.php @@ -108,6 +108,18 @@ public function testPropertyRevision() } + public function testPropertyDateCreatedIso() + { + $this->CallResult->setdateCreatedIso('2023-09-21 15:30:00'); + $this->assertEquals('2023-09-21 15:30:00', $this->CallResult->getdateCreatedIso()); + } + + public function testPropertyDateUpdatedIso() + { + $this->CallResult->setdateUpdatedIso('2023-09-21 15:30:00'); + $this->assertEquals('2023-09-21 15:30:00', $this->CallResult->getdateUpdatedIso()); + } + public function testPropertyCallId() { @@ -184,6 +196,12 @@ public function testPropertyStartTime() $this->assertIsString($this->CallResult->getStartTime()); } + public function testPropertyStartTimeIso() + { + $this->CallResult->setstartTimeIso('2023-09-21 15:30:00'); + $this->assertEquals('2023-09-21 15:30:00', $this->CallResult->getstartTimeIso()); + } + public function testPropertyConnectTime() { @@ -192,6 +210,12 @@ public function testPropertyConnectTime() $this->assertIsString($this->CallResult->getConnectTime()); } + public function testPropertyConnectTimeIso() + { + $this->CallResult->setconnectTimeIso('2023-09-21 15:30:00'); + $this->assertEquals('2023-09-21 15:30:00', $this->CallResult->getconnectTimeIso()); + } + public function testPropertyEndTime() { @@ -200,6 +224,12 @@ public function testPropertyEndTime() $this->assertIsString($this->CallResult->getEndTime()); } + public function testPropertyEndTimeIso() + { + $this->CallResult->setendTimeIso('2023-09-21 15:30:00'); + $this->assertEquals('2023-09-21 15:30:00', $this->CallResult->getendTimeIso()); + } + public function testPropertyDuration() { @@ -248,6 +278,21 @@ public function testPropertyAnsweredBy() $this->assertEquals(\FreeClimb\Api\Model\AnsweredBy::MACHINE, $this->CallResult->getansweredBy()); } + public function testPropertyCallerName() + { + + $this->CallResult->setCallerName('TS'); + $this->assertEquals('TS', $this->CallResult->getCallerName()); + $this->assertIsString($this->CallResult->getCallerName()); + } + + public function testPropertyWebRtc() + { + $this->CallResult->setwebRtc(false); + $this->assertFalse($this->CallResult->getwebRtc()); + $this->assertIsBool($this->CallResult->getwebRtc()); + } + public function testPropertySubresourceUris() { $this->CallResult->setsubresourceUris(new \stdClass()); diff --git a/test/Model/QueueResultTest.php b/test/Model/QueueResultTest.php index 286ca79..26bf887 100644 --- a/test/Model/QueueResultTest.php +++ b/test/Model/QueueResultTest.php @@ -162,6 +162,16 @@ public function testPropertyAverageQueueRemovalTime() } + public function testPropertyAverageWaitTime() + { + + + $this->QueueResult->setaverageWaitTime(1); + $this->assertEquals(1, $this->QueueResult->getaverageWaitTime()); + $this->assertIsNumeric($this->QueueResult->getaverageWaitTime()); + + } + public function testPropertySubresourceUris() { $this->QueueResult->setsubresourceUris(new \stdClass()); From 234ef765cefdd5d6dd020a16bc535bee9e000dfd Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Fri, 6 Mar 2026 10:04:35 -0500 Subject: [PATCH 06/11] Add new changes from latest spec updates part 2 --- lib/Model/CallResultAllOfSubresourceUris.php | 2 +- openapi.json | 29 +++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/lib/Model/CallResultAllOfSubresourceUris.php b/lib/Model/CallResultAllOfSubresourceUris.php index 493efb9..3489771 100644 --- a/lib/Model/CallResultAllOfSubresourceUris.php +++ b/lib/Model/CallResultAllOfSubresourceUris.php @@ -52,7 +52,7 @@ class CallResultAllOfSubresourceUris implements ModelInterface, ArrayAccess, \Js * * @var string */ - protected static $openAPIModelName = 'CallResult_allOf_subresourceUris'; + protected static $openAPIModelName = 'CallResultAllOfSubresourceUris'; /** * Array of property to type mappings. Used for (de)serialization diff --git a/openapi.json b/openapi.json index 2e24ec8..c759411 100644 --- a/openapi.json +++ b/openapi.json @@ -3114,6 +3114,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": [ { @@ -3232,19 +3247,7 @@ "nullable": true }, "subresourceUris": { - "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." - } - } + "$ref": "#/components/schemas/CallResultAllOfSubresourceUris" }, "applicationId": { "type": "string", From 481ac9f39668d4060f99afff9719b27d09270372 Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Mon, 9 Mar 2026 09:43:08 -0400 Subject: [PATCH 07/11] Resolve dependabot high critical vulnerabilities --- package.json | 7 +-- yarn.lock | 124 ++++++++++++++++++++++----------------------------- 2 files changed, 55 insertions(+), 76 deletions(-) diff --git a/package.json b/package.json index a8336b0..036ebec 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,7 @@ { "dependencies": { - "@stoplight/prism-cli": "5.6.0", - "fast-xml-parser": "^4.5.0", + "@stoplight/prism-cli": "5.14.2", + "fast-xml-parser": "^5.3.8", "jsonpath-plus": "^10.3.0" - }, - "resolutions": { - "@stoplight/json": "3.20.0" } } diff --git a/yarn.lock b/yarn.lock index c52c0a7..037b23a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27,7 +27,7 @@ resolved "https://registry.yarnpkg.com/@jsep-plugin/regex/-/regex-1.0.4.tgz#cb2fc423220fa71c609323b9ba7f7d344a755fcc" integrity sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg== -"@stoplight/http-spec@^7.0.2", "@stoplight/http-spec@^7.0.3": +"@stoplight/http-spec@^7.0.3": version "7.1.0" resolved "https://registry.yarnpkg.com/@stoplight/http-spec/-/http-spec-7.1.0.tgz#516fec5f4b08cc93dadfb4969a6f9616165b0553" integrity sha512-Z2XqKX2SV8a1rrgSzFqccX2TolfcblT+l4pNvUU+THaLl50tKDoeidwWWZTzYUzqU0+UV97ponvqEbWWN3PaXg== @@ -86,7 +86,19 @@ "@types/json-schema" "^7.0.7" json-pointer "^0.6.1" -"@stoplight/json@3.20.0", "@stoplight/json@3.21.7", "@stoplight/json@^3.18.1": +"@stoplight/json@3.21.7": + version "3.21.7" + resolved "https://registry.yarnpkg.com/@stoplight/json/-/json-3.21.7.tgz#102f5fd11921984c96672ce4307850daa1cbfc7b" + integrity sha512-xcJXgKFqv/uCEgtGlPxy3tPA+4I+ZI4vAuMJ885+ThkTHFVkC+0Fm58lA9NlsyjnkpxFh4YiQWpH+KefHdbA0A== + dependencies: + "@stoplight/ordered-object-literal" "^1.0.3" + "@stoplight/path" "^1.3.2" + "@stoplight/types" "^13.6.0" + jsonc-parser "~2.2.1" + lodash "^4.17.21" + safe-stable-stringify "^1.1" + +"@stoplight/json@^3.18.1": version "3.20.0" resolved "https://registry.yarnpkg.com/@stoplight/json/-/json-3.20.0.tgz#3acd893c6ed3394ac0a32b383038bd9710a167f9" integrity sha512-xR5nnO2HSy7hGzchUAv1/p7V94EXwHmpbm5ORim4BQm8w/u1sF2ttIYqDx8BesTLWTybRxLysyDH+QHjpQnQdw== @@ -108,33 +120,33 @@ resolved "https://registry.yarnpkg.com/@stoplight/path/-/path-1.3.2.tgz#96e591496b72fde0f0cdae01a61d64f065bd9ede" integrity sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ== -"@stoplight/prism-cli@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@stoplight/prism-cli/-/prism-cli-5.6.0.tgz#fc6590936eb290bf60bfe289eb6ac3b3366c2031" - integrity sha512-BCCeWKjmjtFDQQv0qCATIE3L0HtnQQa3tUNvcMoCfZWIEe2McSGZkudckBsmGFfv6xycUrTkHSI/HNxhKYp5fg== +"@stoplight/prism-cli@5.14.2": + version "5.14.2" + resolved "https://registry.yarnpkg.com/@stoplight/prism-cli/-/prism-cli-5.14.2.tgz#4729662fddb08f4ce03a7ccb98817f368e3940e1" + integrity sha512-S/x47zQa7NgoGAD0Q1JlijV7GRDd1zP/FcIpxSh+cJRUUImfALJJm1R3ONLweP97oG/b9BrwRyC+0GNYuzrviw== dependencies: - "@stoplight/http-spec" "^7.0.2" - "@stoplight/json" "^3.18.1" + "@stoplight/json" "3.21.7" "@stoplight/json-schema-ref-parser" "9.2.7" - "@stoplight/prism-core" "^5.6.0" - "@stoplight/prism-http" "^5.6.0" - "@stoplight/prism-http-server" "^5.6.0" + "@stoplight/prism-core" "^5.8.0" + "@stoplight/prism-http" "5.12.0" + "@stoplight/prism-http-server" "^5.12.0" "@stoplight/types" "^14.1.0" chalk "^4.1.2" chokidar "^3.5.2" fp-ts "^2.11.5" - json-schema-faker "0.5.3" + json-schema-faker "0.5.8" + jsonrepair "^3.12.0" lodash "^4.17.21" node-fetch "^2.6.5" pino "^6.13.3" signale "^1.4.0" - split2 "^3.2.2" + split2 "^4.2.0" tslib "^2.3.1" uri-template-lite "^22.9.0" urijs "^1.19.11" yargs "^16.2.0" -"@stoplight/prism-core@^5.6.0", "@stoplight/prism-core@^5.8.0": +"@stoplight/prism-core@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@stoplight/prism-core/-/prism-core-5.8.0.tgz#850917e1c45bfcd92012b3b235d20e3087600372" integrity sha512-fmH7n6e0thzOGcD5uZBu/Xx1iFNfpc9ACTxPie+lFD54SJ214M2FIFXD7kV+NCFlC+w5OFw+lJRaYM859uMnAg== @@ -144,7 +156,7 @@ pino "^6.13.3" tslib "^2.3.1" -"@stoplight/prism-http-server@^5.6.0": +"@stoplight/prism-http-server@^5.12.0": version "5.12.2" resolved "https://registry.yarnpkg.com/@stoplight/prism-http-server/-/prism-http-server-5.12.2.tgz#d8de94f6b3506b464a5c89ff049b1e0fc9822ef9" integrity sha512-h7MpOuv/WPvf4MhQmXw3CygAZp64Ts0SOM4BdoafcgAOJZyvRAOjUNJeelGJsHYdPK0aB9NZsqsaKBtNfkYj+A== @@ -162,7 +174,7 @@ tslib "^2.3.1" type-is "^1.6.18" -"@stoplight/prism-http@^5.12.0", "@stoplight/prism-http@^5.6.0": +"@stoplight/prism-http@5.12.0", "@stoplight/prism-http@^5.12.0": version "5.12.0" resolved "https://registry.yarnpkg.com/@stoplight/prism-http/-/prism-http-5.12.0.tgz#b763292c5044e9213b558cbc44e5a2187cfffea4" integrity sha512-H+B/SO4SgQ6DT3CHIDCMQFGOe48Yecj0Eu+6rXwrs5m1JFyA2nlDwz+r73QJLGQanN4Biod2s0V9pZRcs2JnPA== @@ -528,6 +540,11 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== +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" @@ -535,12 +552,13 @@ fast-xml-parser@^4.2.0: dependencies: strnum "^1.1.1" -fast-xml-parser@^4.5.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.1.tgz#a7e665ff79b7919100a5202f23984b6150f9b31e" - integrity sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w== +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: - strnum "^1.0.5" + fast-xml-builder "^1.0.0" + strnum "^2.1.2" fastestsmallesttextencoderdecoder@^1.0.22: version "1.0.22" @@ -664,11 +682,6 @@ iconv-lite@0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - io-ts@^2.2.16: version "2.2.22" resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.22.tgz#5ab0d3636fe8494a275f0266461ab019da4b8d0b" @@ -755,14 +768,6 @@ json-schema-compare@^0.2.2: dependencies: lodash "^4.17.4" -json-schema-faker@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/json-schema-faker/-/json-schema-faker-0.5.3.tgz#92f8a102037acf68e1c8e3a2e7c85726d285512d" - integrity sha512-BeIrR0+YSrTbAR9dOMnjbFl1MvHyXnq+Wpdw1FpWZDHWKLzK229hZ5huyPcmzFUfVq1ODwf40WdGVoE266UBUg== - dependencies: - json-schema-ref-parser "^6.1.0" - jsonpath-plus "^7.2.0" - json-schema-faker@0.5.8: version "0.5.8" resolved "https://registry.yarnpkg.com/json-schema-faker/-/json-schema-faker-0.5.8.tgz#13e8b53fef4d86de5c5d164763c80427da892b0c" @@ -799,10 +804,10 @@ jsonpath-plus@^10.1.0, jsonpath-plus@^10.3.0: "@jsep-plugin/regex" "^1.0.4" jsep "^1.4.0" -jsonpath-plus@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz#7ad94e147b3ed42f7939c315d2b9ce490c5a3899" - integrity sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA== +jsonrepair@^3.12.0: + version "3.13.2" + resolved "https://registry.yarnpkg.com/jsonrepair/-/jsonrepair-3.13.2.tgz#cdc35669241482969d0ef5c7a2e4673abccd76e1" + integrity sha512-Leuly0nbM4R+S5SVJk3VHfw1oxnlEK9KygdZvfUtEtTawNDyzB4qa1xWTmFt1aeoA7sXZkVTRuIixJ8bAvqVUg== liquid-json@0.3.1: version "0.3.1" @@ -1050,15 +1055,6 @@ quick-format-unescaped@^4.0.3: resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== -readable-stream@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -1076,11 +1072,6 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - safe-stable-stringify@^1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz#c8a220ab525cd94e60ebf47ddc404d610dc5d84a" @@ -1118,12 +1109,10 @@ sonic-boom@^1.0.2: atomic-sleep "^1.0.0" flatstr "^1.0.12" -split2@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" +split2@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== sprintf-js@~1.0.2: version "1.0.3" @@ -1139,13 +1128,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -1158,11 +1140,16 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -strnum@^1.0.5, strnum@^1.1.1: +strnum@^1.1.1: version "1.1.2" 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" @@ -1217,11 +1204,6 @@ urijs@^1.19.11: resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc" integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - utility-types@^3.10.0: version "3.11.0" resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" From 3c567ca744130ea5c61b919174f52e39c47a7375 Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Mon, 6 Apr 2026 12:09:52 -0400 Subject: [PATCH 08/11] Fix package version for php --- README.md | 2 +- composer.json | 2 +- lib/Configuration.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c81dfe3..fbe89a3 100644 --- a/README.md +++ b/README.md @@ -375,6 +375,6 @@ support@freeclimb.com This PHP package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: - API version: `1.0.0` - - Package version: `5.3.1` + - Package version: `5.4.0` - Generator version: `7.9.0` - Build package: `org.openapitools.codegen.languages.PhpClientCodegen` diff --git a/composer.json b/composer.json index c4bb1a6..ad3f07a 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "freeclimbapi/php-sdk", - "version": "5.3.1", + "version": "5.4.0", "description": "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.", "keywords": [ "openapitools", diff --git a/lib/Configuration.php b/lib/Configuration.php index cda77dd..5a59386 100644 --- a/lib/Configuration.php +++ b/lib/Configuration.php @@ -102,7 +102,7 @@ class Configuration * * @var string */ - protected $userAgent = 'OpenAPI-Generator/5.3.1/PHP'; + protected $userAgent = 'OpenAPI-Generator/5.4.0/PHP'; /** * Debug switch (default set to false) @@ -435,7 +435,7 @@ public static function toDebugReport() $report .= ' OS: ' . php_uname() . PHP_EOL; $report .= ' PHP Version: ' . PHP_VERSION . PHP_EOL; $report .= ' The version of the OpenAPI document: 1.0.0' . PHP_EOL; - $report .= ' SDK Package Version: 5.3.1' . PHP_EOL; + $report .= ' SDK Package Version: 5.4.0' . PHP_EOL; $report .= ' Temp Folder Path: ' . self::getDefaultConfiguration()->getTempFolderPath() . PHP_EOL; return $report; From a4e2f74a6c4cf28f8cde544415b769ab348bfaaf Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Mon, 6 Apr 2026 12:10:44 -0400 Subject: [PATCH 09/11] Update changelog file --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 86c3c69..b255449 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm None - + -## [5.3.1] - 2026-03-04 +## [5.4.0] - 2026-04-06 ### Added From da90ba6428b185aa2a0176746d147c224ecc51e4 Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Mon, 6 Apr 2026 12:15:55 -0400 Subject: [PATCH 10/11] Run composer update --- composer.lock | 111 +++++++++++++++++++++++++------------------------- 1 file changed, 56 insertions(+), 55 deletions(-) diff --git a/composer.lock b/composer.lock index 9a48411..f14de91 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "30cdbcf1463d1c364022892c953ed261", + "content-hash": "b2db9cf2bec0265f592bcc2cda21d187", "packages": [ { "name": "guzzlehttp/guzzle", @@ -217,16 +217,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.8.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "21dc724a0583619cd1652f673303492272778051" + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", - "reference": "21dc724a0583619cd1652f673303492272778051", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884", + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884", "shasum": "" }, "require": { @@ -242,6 +242,7 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "0.9.0", + "jshttp/mime-db": "1.54.0.1", "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { @@ -313,7 +314,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.8.0" + "source": "https://github.com/guzzle/psr7/tree/2.9.0" }, "funding": [ { @@ -329,7 +330,7 @@ "type": "tidelift" } ], - "time": "2025-08-23T21:21:41+00:00" + "time": "2026-03-10T16:41:02+00:00" }, { "name": "psr/http-client", @@ -3529,16 +3530,16 @@ }, { "name": "symfony/console", - "version": "v8.0.6", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "488285876e807a4777f074041d8bb508623419fa" + "reference": "5b66d385dc58f69652e56f78a4184615e3f2b7f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/488285876e807a4777f074041d8bb508623419fa", - "reference": "488285876e807a4777f074041d8bb508623419fa", + "url": "https://api.github.com/repos/symfony/console/zipball/5b66d385dc58f69652e56f78a4184615e3f2b7f7", + "reference": "5b66d385dc58f69652e56f78a4184615e3f2b7f7", "shasum": "" }, "require": { @@ -3595,7 +3596,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v8.0.6" + "source": "https://github.com/symfony/console/tree/v8.0.8" }, "funding": [ { @@ -3615,20 +3616,20 @@ "type": "tidelift" } ], - "time": "2026-02-25T16:59:43+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v8.0.4", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "99301401da182b6cfaa4700dbe9987bb75474b47" + "reference": "f662acc6ab22a3d6d716dcb44c381c6002940df6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/99301401da182b6cfaa4700dbe9987bb75474b47", - "reference": "99301401da182b6cfaa4700dbe9987bb75474b47", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f662acc6ab22a3d6d716dcb44c381c6002940df6", + "reference": "f662acc6ab22a3d6d716dcb44c381c6002940df6", "shasum": "" }, "require": { @@ -3680,7 +3681,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v8.0.4" + "source": "https://github.com/symfony/event-dispatcher/tree/v8.0.8" }, "funding": [ { @@ -3700,7 +3701,7 @@ "type": "tidelift" } ], - "time": "2026-01-05T11:45:55+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3780,16 +3781,16 @@ }, { "name": "symfony/filesystem", - "version": "v8.0.6", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7bf9162d7a0dff98d079b72948508fa48018a770" + "reference": "66b769ae743ce2d13e435528fbef4af03d623e5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7bf9162d7a0dff98d079b72948508fa48018a770", - "reference": "7bf9162d7a0dff98d079b72948508fa48018a770", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/66b769ae743ce2d13e435528fbef4af03d623e5a", + "reference": "66b769ae743ce2d13e435528fbef4af03d623e5a", "shasum": "" }, "require": { @@ -3826,7 +3827,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v8.0.6" + "source": "https://github.com/symfony/filesystem/tree/v8.0.8" }, "funding": [ { @@ -3846,20 +3847,20 @@ "type": "tidelift" } ], - "time": "2026-02-25T16:59:43+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/finder", - "version": "v8.0.6", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "441404f09a54de6d1bd6ad219e088cdf4c91f97c" + "reference": "8da41214757b87d97f181e3d14a4179286151007" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/441404f09a54de6d1bd6ad219e088cdf4c91f97c", - "reference": "441404f09a54de6d1bd6ad219e088cdf4c91f97c", + "url": "https://api.github.com/repos/symfony/finder/zipball/8da41214757b87d97f181e3d14a4179286151007", + "reference": "8da41214757b87d97f181e3d14a4179286151007", "shasum": "" }, "require": { @@ -3894,7 +3895,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v8.0.6" + "source": "https://github.com/symfony/finder/tree/v8.0.8" }, "funding": [ { @@ -3914,20 +3915,20 @@ "type": "tidelift" } ], - "time": "2026-01-29T09:41:02+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/options-resolver", - "version": "v8.0.0", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7" + "reference": "b48bce0a70b914f6953dafbd10474df232ed4de8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d2b592535ffa6600c265a3893a7f7fd2bad82dd7", - "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b48bce0a70b914f6953dafbd10474df232ed4de8", + "reference": "b48bce0a70b914f6953dafbd10474df232ed4de8", "shasum": "" }, "require": { @@ -3965,7 +3966,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v8.0.0" + "source": "https://github.com/symfony/options-resolver/tree/v8.0.8" }, "funding": [ { @@ -3985,7 +3986,7 @@ "type": "tidelift" } ], - "time": "2025-11-12T15:55:31+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4568,16 +4569,16 @@ }, { "name": "symfony/process", - "version": "v8.0.5", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674" + "reference": "cb8939aff03470d1a9d1d1b66d08c6fa71b3bbdc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674", - "reference": "b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674", + "url": "https://api.github.com/repos/symfony/process/zipball/cb8939aff03470d1a9d1d1b66d08c6fa71b3bbdc", + "reference": "cb8939aff03470d1a9d1d1b66d08c6fa71b3bbdc", "shasum": "" }, "require": { @@ -4609,7 +4610,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v8.0.5" + "source": "https://github.com/symfony/process/tree/v8.0.8" }, "funding": [ { @@ -4629,7 +4630,7 @@ "type": "tidelift" } ], - "time": "2026-01-26T15:08:38+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/service-contracts", @@ -4720,16 +4721,16 @@ }, { "name": "symfony/stopwatch", - "version": "v8.0.0", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942" + "reference": "85954ed72d5440ea4dc9a10b7e49e01df766ffa3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/67df1914c6ccd2d7b52f70d40cf2aea02159d942", - "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/85954ed72d5440ea4dc9a10b7e49e01df766ffa3", + "reference": "85954ed72d5440ea4dc9a10b7e49e01df766ffa3", "shasum": "" }, "require": { @@ -4762,7 +4763,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v8.0.0" + "source": "https://github.com/symfony/stopwatch/tree/v8.0.8" }, "funding": [ { @@ -4782,20 +4783,20 @@ "type": "tidelift" } ], - "time": "2025-08-04T07:36:47+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "symfony/string", - "version": "v8.0.6", + "version": "v8.0.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "6c9e1108041b5dce21a9a4984b531c4923aa9ec4" + "reference": "ae9488f874d7603f9d2dfbf120203882b645d963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/6c9e1108041b5dce21a9a4984b531c4923aa9ec4", - "reference": "6c9e1108041b5dce21a9a4984b531c4923aa9ec4", + "url": "https://api.github.com/repos/symfony/string/zipball/ae9488f874d7603f9d2dfbf120203882b645d963", + "reference": "ae9488f874d7603f9d2dfbf120203882b645d963", "shasum": "" }, "require": { @@ -4852,7 +4853,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v8.0.6" + "source": "https://github.com/symfony/string/tree/v8.0.8" }, "funding": [ { @@ -4872,7 +4873,7 @@ "type": "tidelift" } ], - "time": "2026-02-09T10:14:57+00:00" + "time": "2026-03-30T15:14:47+00:00" }, { "name": "theseer/tokenizer", From d98d5c42cc50edee959e17da3feba697a6c56995 Mon Sep 17 00:00:00 2001 From: Ajevan M Date: Fri, 17 Apr 2026 15:26:30 -0400 Subject: [PATCH 11/11] Add AudioStream PerCL command --- .openapi-generator/FILES | 6 + README.md | 2 + composer.lock | 166 ++++-- docs/Model/AudioStream.md | 13 + docs/Model/AudioStreamWebhook.md | 17 + docs/Model/ConferenceResult.md | 2 +- lib/Model/AudioStream.php | 546 ++++++++++++++++++++ lib/Model/AudioStreamWebhook.php | 712 ++++++++++++++++++++++++++ lib/Model/ConferenceResult.php | 2 +- lib/Model/IncomingNumberResult.php | 11 +- lib/Model/MessageResult.php | 11 +- lib/Model/RequestType.php | 2 + openapi.json | 97 +++- test/Model/AudioStreamTest.php | 114 +++++ test/Model/AudioStreamWebhookTest.php | 170 ++++++ 15 files changed, 1814 insertions(+), 57 deletions(-) create mode 100644 docs/Model/AudioStream.md create mode 100644 docs/Model/AudioStreamWebhook.md create mode 100644 lib/Model/AudioStream.php create mode 100644 lib/Model/AudioStreamWebhook.php create mode 100644 test/Model/AudioStreamTest.php create mode 100644 test/Model/AudioStreamWebhookTest.php diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 2bc81b2..16527a8 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -15,6 +15,8 @@ docs/Model/AnsweredBy.md docs/Model/ApplicationList.md docs/Model/ApplicationRequest.md docs/Model/ApplicationResult.md +docs/Model/AudioStream.md +docs/Model/AudioStreamWebhook.md docs/Model/AvailableNumber.md docs/Model/AvailableNumberList.md docs/Model/BargeInReason.md @@ -177,6 +179,8 @@ lib/Model/AnsweredBy.php lib/Model/ApplicationList.php lib/Model/ApplicationRequest.php lib/Model/ApplicationResult.php +lib/Model/AudioStream.php +lib/Model/AudioStreamWebhook.php lib/Model/AvailableNumber.php lib/Model/AvailableNumberList.php lib/Model/BargeInReason.php @@ -338,6 +342,8 @@ test/Model/AnsweredByTest.php test/Model/ApplicationListTest.php test/Model/ApplicationRequestTest.php test/Model/ApplicationResultTest.php +test/Model/AudioStreamTest.php +test/Model/AudioStreamWebhookTest.php test/Model/AvailableNumberListTest.php test/Model/AvailableNumberTest.php test/Model/BargeInReasonTest.php diff --git a/README.md b/README.md index fbe89a3..a499d53 100644 --- a/README.md +++ b/README.md @@ -203,6 +203,8 @@ Class | Method | HTTP request | Description - [ApplicationList](docs/Model/ApplicationList.md) - [ApplicationRequest](docs/Model/ApplicationRequest.md) - [ApplicationResult](docs/Model/ApplicationResult.md) +- [AudioStream](docs/Model/AudioStream.md) +- [AudioStreamWebhook](docs/Model/AudioStreamWebhook.md) - [AvailableNumber](docs/Model/AvailableNumber.md) - [AvailableNumberList](docs/Model/AvailableNumberList.md) - [BargeInReason](docs/Model/BargeInReason.md) diff --git a/composer.lock b/composer.lock index f14de91..f868398 100644 --- a/composer.lock +++ b/composer.lock @@ -960,6 +960,75 @@ ], "time": "2026-01-05T06:47:08+00:00" }, + { + "name": "ergebnis/agent-detector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/ergebnis/agent-detector.git", + "reference": "5b654a9f1ff8a5d2ce6a57568df5ae8801c87f64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ergebnis/agent-detector/zipball/5b654a9f1ff8a5d2ce6a57568df5ae8801c87f64", + "reference": "5b654a9f1ff8a5d2ce6a57568df5ae8801c87f64", + "shasum": "" + }, + "require": { + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0 || ~8.6.0" + }, + "require-dev": { + "ergebnis/composer-normalize": "^2.50.0", + "ergebnis/license": "^2.7.0", + "ergebnis/php-cs-fixer-config": "^6.60.2", + "ergebnis/phpstan-rules": "^2.13.1", + "ergebnis/phpunit-slow-test-detector": "^2.24.0", + "ergebnis/rector-rules": "^1.16.0", + "fakerphp/faker": "^1.24.1", + "infection/infection": "^0.26.6", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.46", + "phpstan/phpstan-deprecation-rules": "^2.0.4", + "phpstan/phpstan-phpunit": "^2.0.16", + "phpstan/phpstan-strict-rules": "^2.0.10", + "phpunit/phpunit": "^9.6.34", + "rector/rector": "^2.4.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.0-dev" + }, + "composer-normalize": { + "indent-size": 2, + "indent-style": "space" + } + }, + "autoload": { + "psr-4": { + "Ergebnis\\AgentDetector\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Möller", + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" + } + ], + "description": "Provides a detector for detecting the presence of an agent.", + "homepage": "https://github.com/ergebnis/agent-detector", + "support": { + "issues": "https://github.com/ergebnis/agent-detector/issues", + "security": "https://github.com/ergebnis/agent-detector/blob/main/.github/SECURITY.md", + "source": "https://github.com/ergebnis/agent-detector" + }, + "time": "2026-04-10T13:45:13+00:00" + }, { "name": "evenement/evenement", "version": "v3.0.2", @@ -1070,22 +1139,23 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.94.2", + "version": "v3.95.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "7787ceff91365ba7d623ec410b8f429cdebb4f63" + "reference": "a9727678fbd12997f1d9de8f4a37824ed9df1065" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7787ceff91365ba7d623ec410b8f429cdebb4f63", - "reference": "7787ceff91365ba7d623ec410b8f429cdebb4f63", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a9727678fbd12997f1d9de8f4a37824ed9df1065", + "reference": "a9727678fbd12997f1d9de8f4a37824ed9df1065", "shasum": "" }, "require": { "clue/ndjson-react": "^1.3", "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.5", + "ergebnis/agent-detector": "^1.1.1", "ext-filter": "*", "ext-hash": "*", "ext-json": "*", @@ -1110,18 +1180,18 @@ "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0" }, "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.7.1", - "infection/infection": "^0.32.3", - "justinrainbow/json-schema": "^6.6.4", + "facile-it/paraunit": "^1.3.1 || ^2.8.0", + "infection/infection": "^0.32.6", + "justinrainbow/json-schema": "^6.8.0", "keradus/cli-executor": "^2.3", "mikey179/vfsstream": "^1.6.12", "php-coveralls/php-coveralls": "^2.9.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.7", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.7", - "phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.51", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.8", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.8", + "phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.55", "symfony/polyfill-php85": "^1.33", - "symfony/var-dumper": "^5.4.48 || ^6.4.32 || ^7.4.4 || ^8.0.4", - "symfony/yaml": "^5.4.45 || ^6.4.30 || ^7.4.1 || ^8.0.1" + "symfony/var-dumper": "^5.4.48 || ^6.4.32 || ^7.4.4 || ^8.0.8", + "symfony/yaml": "^5.4.45 || ^6.4.30 || ^7.4.1 || ^8.0.8" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -1162,7 +1232,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.2" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.95.1" }, "funding": [ { @@ -1170,7 +1240,7 @@ "type": "github" } ], - "time": "2026-02-20T16:13:53+00:00" + "time": "2026-04-12T17:00:09+00:00" }, { "name": "myclabs/deep-copy", @@ -3990,16 +4060,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.33.0", + "version": "v1.36.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + "reference": "141046a8f9477948ff284fa65be2095baafb94f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2", "shasum": "" }, "require": { @@ -4049,7 +4119,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.36.0" }, "funding": [ { @@ -4069,20 +4139,20 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.33.0", + "version": "v1.36.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" + "reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", - "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/ad1b7b9092976d6c948b8a187cec9faaea9ec1df", + "reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df", "shasum": "" }, "require": { @@ -4131,7 +4201,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.36.0" }, "funding": [ { @@ -4151,11 +4221,11 @@ "type": "tidelift" } ], - "time": "2025-06-27T09:58:17+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.33.0", + "version": "v1.36.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -4216,7 +4286,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.36.0" }, "funding": [ { @@ -4240,16 +4310,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.33.0", + "version": "v1.36.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315", + "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315", "shasum": "" }, "require": { @@ -4301,7 +4371,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.36.0" }, "funding": [ { @@ -4321,20 +4391,20 @@ "type": "tidelift" } ], - "time": "2024-12-23T08:48:59+00:00" + "time": "2026-04-10T17:25:58+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.33.0", + "version": "v1.36.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", - "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411", + "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411", "shasum": "" }, "require": { @@ -4385,7 +4455,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.36.0" }, "funding": [ { @@ -4405,11 +4475,11 @@ "type": "tidelift" } ], - "time": "2025-01-02T08:10:11+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.33.0", + "version": "v1.36.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", @@ -4465,7 +4535,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.36.0" }, "funding": [ { @@ -4489,16 +4559,16 @@ }, { "name": "symfony/polyfill-php84", - "version": "v1.33.0", + "version": "v1.36.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" + "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", - "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/88486db2c389b290bf87ff1de7ebc1e13e42bb06", + "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06", "shasum": "" }, "require": { @@ -4545,7 +4615,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.36.0" }, "funding": [ { @@ -4565,7 +4635,7 @@ "type": "tidelift" } ], - "time": "2025-06-24T13:30:11+00:00" + "time": "2026-04-10T18:47:49+00:00" }, { "name": "symfony/process", diff --git a/docs/Model/AudioStream.md b/docs/Model/AudioStream.md new file mode 100644 index 0000000..556d770 --- /dev/null +++ b/docs/Model/AudioStream.md @@ -0,0 +1,13 @@ +# # AudioStream + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**location** | **string** | The gRPC server location that will receive the grpc stream as a uri and must be port 80 or 443. | +**action_url** | **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. | [optional] +**content_type** | **string** | The type and sample rate of the audio being received over the channel must match the environmental sample rate. | [optional] +**meta_data** | **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. | [optional] +**privacy_mode** | **bool** | Enables audio redaction with full call recording while gRPC session is running and blocks logging of any DTMFs received by FreeClimb. | [optional] + +[[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/docs/Model/AudioStreamWebhook.md b/docs/Model/AudioStreamWebhook.md new file mode 100644 index 0000000..b03f380 --- /dev/null +++ b/docs/Model/AudioStreamWebhook.md @@ -0,0 +1,17 @@ +# # AudioStreamWebhook + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**request_type** | **string** | 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. | [optional] +**call_id** | **string** | Unique ID for this Call, generated by FreeClimb. This is the call leg which ended its gRPC session. | [optional] +**account_id** | **string** | Account ID associated with your account. | [optional] +**from** | **string** | Phone number of the party that initiated the Call (in E.164 format). | [optional] +**to** | **string** | Phone number provisioned to you and to which this Call is directed (in E.164 format). | [optional] +**call_status** | [**\FreeClimb\Api\Model\CallStatus**](CallStatus.md) | | [optional] +**direction** | [**\FreeClimb\Api\Model\CallDirection**](CallDirection.md) | | [optional] +**conference_id** | **string** | This is only populated if request pertains to a Conference. Otherwise, it is set to null. | [optional] +**queue_id** | **string** | This is only populated if the request pertains to a Queue. Otherwise, it is set to null. | [optional] + +[[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/docs/Model/ConferenceResult.md b/docs/Model/ConferenceResult.md index e1e20a2..0a2497d 100644 --- a/docs/Model/ConferenceResult.md +++ b/docs/Model/ConferenceResult.md @@ -11,7 +11,7 @@ Name | Type | Description | Notes **conference_id** | **string** | A string that uniquely identifies this Conference resource. | [optional] **account_id** | **string** | ID of the account that created this Conference. | [optional] **alias** | **string** | A description for this Conference. | [optional] -**play_beep** | [**\FreeClimb\Api\Model\PlayBeep**](PlayBeep.md) | | [optional] +**play_beep** | [**\FreeClimb\Api\Model\PlayBeep**](PlayBeep.md) | Setting that controls when a beep is played. One of: always, never, entryOnly, exitOnly. Defaults to always. | [optional] **record** | **bool** | Flag indicating whether recording is enabled for this Conference. | [optional] **status** | [**\FreeClimb\Api\Model\ConferenceStatus**](ConferenceStatus.md) | | [optional] **wait_url** | **string** | URL referencing the audio file to be used as default wait music for the Conference when it is in the populated state. | [optional] diff --git a/lib/Model/AudioStream.php b/lib/Model/AudioStream.php new file mode 100644 index 0000000..741c82d --- /dev/null +++ b/lib/Model/AudioStream.php @@ -0,0 +1,546 @@ + + */ +class AudioStream extends PerclCommand +{ + public const DISCRIMINATOR = null; + + /** + * The original name of the model. + * + * @var string + */ + protected static $openAPIModelName = 'AudioStream'; + + /** + * Array of property to type mappings. Used for (de)serialization + * + * @var string[] + */ + protected static $openAPITypes = [ + 'location' => 'string', + 'action_url' => 'string', + 'content_type' => 'string', + 'meta_data' => 'string[]', + 'privacy_mode' => 'bool' + ]; + + /** + * Array of property to format mappings. Used for (de)serialization + * + * @var string[] + * @phpstan-var array + * @psalm-var array + */ + protected static $openAPIFormats = [ + 'location' => 'uri', + 'action_url' => 'uri', + 'content_type' => null, + 'meta_data' => null, + 'privacy_mode' => null + ]; + + /** + * Array of nullable properties. Used for (de)serialization + * + * @var boolean[] + */ + protected static array $openAPINullables = [ + 'location' => false, + 'action_url' => false, + 'content_type' => false, + 'meta_data' => false, + 'privacy_mode' => false + ]; + + /** + * If a nullable field gets set to null, insert it here + * + * @var boolean[] + */ + protected array $openAPINullablesSetToNull = []; + + /** + * Array of property to type mappings. Used for (de)serialization + * + * @return array + */ + public static function openAPITypes() + { + return self::$openAPITypes + parent::openAPITypes(); + } + + /** + * Array of property to format mappings. Used for (de)serialization + * + * @return array + */ + public static function openAPIFormats() + { + return self::$openAPIFormats + parent::openAPIFormats(); + } + + /** + * Array of nullable properties + * + * @return array + */ + protected static function openAPINullables(): array + { + return self::$openAPINullables + parent::openAPINullables(); + } + + /** + * Array of nullable field names deliberately set to null + * + * @return boolean[] + */ + private function getOpenAPINullablesSetToNull(): array + { + return $this->openAPINullablesSetToNull; + } + + /** + * Setter - Array of nullable field names deliberately set to null + * + * @param boolean[] $openAPINullablesSetToNull + */ + private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void + { + $this->openAPINullablesSetToNull = $openAPINullablesSetToNull; + } + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool + { + return self::openAPINullables()[$property] ?? false; + } + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool + { + return in_array($property, $this->getOpenAPINullablesSetToNull(), true); + } + + /** + * Array of attributes where the key is the local name, + * and the value is the original name + * + * @var string[] + */ + protected static $attributeMap = [ + 'location' => 'location', + 'action_url' => 'actionUrl', + 'content_type' => 'contentType', + 'meta_data' => 'metaData', + 'privacy_mode' => 'privacyMode' + ]; + + /** + * Array of attributes to setter functions (for deserialization of responses) + * + * @var string[] + */ + protected static $setters = [ + 'location' => 'setLocation', + 'action_url' => 'setActionUrl', + 'content_type' => 'setContentType', + 'meta_data' => 'setMetaData', + 'privacy_mode' => 'setPrivacyMode' + ]; + + /** + * Array of attributes to getter functions (for serialization of requests) + * + * @var string[] + */ + protected static $getters = [ + 'location' => 'getLocation', + 'action_url' => 'getActionUrl', + 'content_type' => 'getContentType', + 'meta_data' => 'getMetaData', + 'privacy_mode' => 'getPrivacyMode' + ]; + + /** + * Array of attributes where the key is the local name, + * and the value is the original name + * + * @return array + */ + public static function attributeMap() + { + return parent::attributeMap() + self::$attributeMap; + } + + /** + * Array of attributes to setter functions (for deserialization of responses) + * + * @return array + */ + public static function setters() + { + return parent::setters() + self::$setters; + } + + /** + * Array of attributes to getter functions (for serialization of requests) + * + * @return array + */ + public static function getters() + { + return parent::getters() + self::$getters; + } + + /** + * The original name of the model. + * + * @return string + */ + public function getModelName() + { + return self::$openAPIModelName; + } + + + + /** + * Constructor + * + * @param mixed[] $data Associated array of property values + * initializing the model + */ + public function __construct(?array $data = null) + { + parent::__construct($data); + + $this->setIfExists('location', $data ?? [], null); + $this->setIfExists('action_url', $data ?? [], null); + $this->setIfExists('content_type', $data ?? [], null); + $this->setIfExists('meta_data', $data ?? [], null); + $this->setIfExists('privacy_mode', $data ?? [], null); + } + + /** + * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName + * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the + * $this->openAPINullablesSetToNull array + * + * @param string $variableName + * @param array $fields + * @param mixed $defaultValue + */ + private function setIfExists(string $variableName, array $fields, $defaultValue): void + { + if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { + $this->openAPINullablesSetToNull[] = $variableName; + } + + $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; + } + + /** + * Show all the invalid properties with reasons. + * + * @return array invalid properties with reasons + */ + public function listInvalidProperties() + { + $invalidProperties = parent::listInvalidProperties(); + + if ($this->container['location'] === null) { + $invalidProperties[] = "'location' can't be null"; + } + return $invalidProperties; + } + + /** + * Validate all the properties in the model + * return true if all passed + * + * @return bool True if all properties are valid + */ + public function valid() + { + return count($this->listInvalidProperties()) === 0; + } + + + /** + * Gets location + * + * @return string + */ + public function getLocation() + { + return $this->container['location']; + } + + /** + * Sets location + * + * @param string $location The gRPC server location that will receive the grpc stream as a uri and must be port 80 or 443. + * + * @return self + */ + public function setLocation($location) + { + if (is_null($location)) { + throw new \InvalidArgumentException('non-nullable location cannot be null'); + } + $this->container['location'] = $location; + + return $this; + } + + /** + * Gets action_url + * + * @return string|null + */ + public function getActionUrl() + { + return $this->container['action_url']; + } + + /** + * Sets action_url + * + * @param string|null $action_url 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. + * + * @return self + */ + public function setActionUrl($action_url) + { + if (is_null($action_url)) { + throw new \InvalidArgumentException('non-nullable action_url cannot be null'); + } + $this->container['action_url'] = $action_url; + + return $this; + } + + /** + * Gets content_type + * + * @return string|null + */ + public function getContentType() + { + return $this->container['content_type']; + } + + /** + * Sets content_type + * + * @param string|null $content_type The type and sample rate of the audio being received over the channel must match the environmental sample rate. + * + * @return self + */ + public function setContentType($content_type) + { + if (is_null($content_type)) { + throw new \InvalidArgumentException('non-nullable content_type cannot be null'); + } + $this->container['content_type'] = $content_type; + + return $this; + } + + /** + * Gets meta_data + * + * @return string[]|null + */ + public function getMetaData() + { + return $this->container['meta_data']; + } + + /** + * Sets meta_data + * + * @param string[]|null $meta_data An arbitrary array of strings passed through FC to the GRPC server can be used to pass state or other information about the call. + * + * @return self + */ + public function setMetaData($meta_data) + { + if (is_null($meta_data)) { + throw new \InvalidArgumentException('non-nullable meta_data cannot be null'); + } + $this->container['meta_data'] = $meta_data; + + return $this; + } + + /** + * Gets privacy_mode + * + * @return bool|null + */ + public function getPrivacyMode() + { + return $this->container['privacy_mode']; + } + + /** + * Sets privacy_mode + * + * @param bool|null $privacy_mode Enables audio redaction with full call recording while gRPC session is running and blocks logging of any DTMFs received by FreeClimb. + * + * @return self + */ + public function setPrivacyMode($privacy_mode) + { + if (is_null($privacy_mode)) { + throw new \InvalidArgumentException('non-nullable privacy_mode cannot be null'); + } + $this->container['privacy_mode'] = $privacy_mode; + + return $this; + } + /** + * Returns true if offset exists. False otherwise. + * + * @param integer $offset Offset + * + * @return boolean + */ + public function offsetExists($offset): bool + { + return isset($this->container[$offset]); + } + + /** + * Gets offset. + * + * @param integer $offset Offset + * + * @return mixed|null + */ + #[\ReturnTypeWillChange] + public function offsetGet($offset) + { + return $this->container[$offset] ?? null; + } + + /** + * Sets value based on offset. + * + * @param int|null $offset Offset + * @param mixed $value Value to be set + * + * @return void + */ + public function offsetSet($offset, $value): void + { + if (is_null($offset)) { + $this->container[] = $value; + } else { + $this->container[$offset] = $value; + } + } + + /** + * Unsets offset. + * + * @param integer $offset Offset + * + * @return void + */ + public function offsetUnset($offset): void + { + unset($this->container[$offset]); + } + + /** + * Serializes the object to a value that can be serialized natively by json_encode(). + * @link https://www.php.net/manual/en/jsonserializable.jsonserialize.php + * + * @return mixed Returns data which can be serialized by json_encode(), which is a value + * of any type other than a resource. + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return ObjectSerializer::sanitizeForSerialization($this); + } + + /** + * Gets the string presentation of the object + * + * @return string + */ + public function __toString() + { + return json_encode( + ObjectSerializer::sanitizeForSerialization($this), + JSON_PRETTY_PRINT + ); + } + + /** + * Gets a header-safe presentation of the object + * + * @return string + */ + public function toHeaderValue() + { + return json_encode(ObjectSerializer::sanitizeForSerialization($this)); + } + +} + + diff --git a/lib/Model/AudioStreamWebhook.php b/lib/Model/AudioStreamWebhook.php new file mode 100644 index 0000000..915f14d --- /dev/null +++ b/lib/Model/AudioStreamWebhook.php @@ -0,0 +1,712 @@ + + */ +class AudioStreamWebhook extends Webhook +{ + public const DISCRIMINATOR = null; + + /** + * The original name of the model. + * + * @var string + */ + protected static $openAPIModelName = 'AudioStreamWebhook'; + + /** + * Array of property to type mappings. Used for (de)serialization + * + * @var string[] + */ + protected static $openAPITypes = [ + 'request_type' => 'string', + 'call_id' => 'string', + 'account_id' => 'string', + 'from' => 'string', + 'to' => 'string', + 'call_status' => '\FreeClimb\Api\Model\CallStatus', + 'direction' => '\FreeClimb\Api\Model\CallDirection', + 'conference_id' => 'string', + 'queue_id' => 'string' + ]; + + /** + * Array of property to format mappings. Used for (de)serialization + * + * @var string[] + * @phpstan-var array + * @psalm-var array + */ + protected static $openAPIFormats = [ + 'request_type' => null, + 'call_id' => null, + 'account_id' => null, + 'from' => null, + 'to' => null, + 'call_status' => null, + 'direction' => null, + 'conference_id' => null, + 'queue_id' => null + ]; + + /** + * Array of nullable properties. Used for (de)serialization + * + * @var boolean[] + */ + protected static array $openAPINullables = [ + 'request_type' => false, + 'call_id' => false, + 'account_id' => false, + 'from' => false, + 'to' => false, + 'call_status' => true, + 'direction' => true, + 'conference_id' => true, + 'queue_id' => true + ]; + + /** + * If a nullable field gets set to null, insert it here + * + * @var boolean[] + */ + protected array $openAPINullablesSetToNull = []; + + /** + * Array of property to type mappings. Used for (de)serialization + * + * @return array + */ + public static function openAPITypes() + { + return self::$openAPITypes + parent::openAPITypes(); + } + + /** + * Array of property to format mappings. Used for (de)serialization + * + * @return array + */ + public static function openAPIFormats() + { + return self::$openAPIFormats + parent::openAPIFormats(); + } + + /** + * Array of nullable properties + * + * @return array + */ + protected static function openAPINullables(): array + { + return self::$openAPINullables + parent::openAPINullables(); + } + + /** + * Array of nullable field names deliberately set to null + * + * @return boolean[] + */ + private function getOpenAPINullablesSetToNull(): array + { + return $this->openAPINullablesSetToNull; + } + + /** + * Setter - Array of nullable field names deliberately set to null + * + * @param boolean[] $openAPINullablesSetToNull + */ + private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void + { + $this->openAPINullablesSetToNull = $openAPINullablesSetToNull; + } + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool + { + return self::openAPINullables()[$property] ?? false; + } + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool + { + return in_array($property, $this->getOpenAPINullablesSetToNull(), true); + } + + /** + * Array of attributes where the key is the local name, + * and the value is the original name + * + * @var string[] + */ + protected static $attributeMap = [ + 'request_type' => 'requestType', + 'call_id' => 'callId', + 'account_id' => 'accountId', + 'from' => 'from', + 'to' => 'to', + 'call_status' => 'callStatus', + 'direction' => 'direction', + 'conference_id' => 'conferenceId', + 'queue_id' => 'queueId' + ]; + + /** + * Array of attributes to setter functions (for deserialization of responses) + * + * @var string[] + */ + protected static $setters = [ + 'request_type' => 'setRequestType', + 'call_id' => 'setCallId', + 'account_id' => 'setAccountId', + 'from' => 'setFrom', + 'to' => 'setTo', + 'call_status' => 'setCallStatus', + 'direction' => 'setDirection', + 'conference_id' => 'setConferenceId', + 'queue_id' => 'setQueueId' + ]; + + /** + * Array of attributes to getter functions (for serialization of requests) + * + * @var string[] + */ + protected static $getters = [ + 'request_type' => 'getRequestType', + 'call_id' => 'getCallId', + 'account_id' => 'getAccountId', + 'from' => 'getFrom', + 'to' => 'getTo', + 'call_status' => 'getCallStatus', + 'direction' => 'getDirection', + 'conference_id' => 'getConferenceId', + 'queue_id' => 'getQueueId' + ]; + + /** + * Array of attributes where the key is the local name, + * and the value is the original name + * + * @return array + */ + public static function attributeMap() + { + return parent::attributeMap() + self::$attributeMap; + } + + /** + * Array of attributes to setter functions (for deserialization of responses) + * + * @return array + */ + public static function setters() + { + return parent::setters() + self::$setters; + } + + /** + * Array of attributes to getter functions (for serialization of requests) + * + * @return array + */ + public static function getters() + { + return parent::getters() + self::$getters; + } + + /** + * The original name of the model. + * + * @return string + */ + public function getModelName() + { + return self::$openAPIModelName; + } + + + + /** + * Constructor + * + * @param mixed[] $data Associated array of property values + * initializing the model + */ + public function __construct(?array $data = null) + { + parent::__construct($data); + + $this->setIfExists('request_type', $data ?? [], null); + $this->setIfExists('call_id', $data ?? [], null); + $this->setIfExists('account_id', $data ?? [], null); + $this->setIfExists('from', $data ?? [], null); + $this->setIfExists('to', $data ?? [], null); + $this->setIfExists('call_status', $data ?? [], null); + $this->setIfExists('direction', $data ?? [], null); + $this->setIfExists('conference_id', $data ?? [], null); + $this->setIfExists('queue_id', $data ?? [], null); + } + + /** + * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName + * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the + * $this->openAPINullablesSetToNull array + * + * @param string $variableName + * @param array $fields + * @param mixed $defaultValue + */ + private function setIfExists(string $variableName, array $fields, $defaultValue): void + { + if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { + $this->openAPINullablesSetToNull[] = $variableName; + } + + $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; + } + + /** + * Show all the invalid properties with reasons. + * + * @return array invalid properties with reasons + */ + public function listInvalidProperties() + { + $invalidProperties = parent::listInvalidProperties(); + + return $invalidProperties; + } + + /** + * Validate all the properties in the model + * return true if all passed + * + * @return bool True if all properties are valid + */ + public function valid() + { + return count($this->listInvalidProperties()) === 0; + } + + + /** + * Gets request_type + * + * @return string|null + */ + public function getRequestType() + { + return $this->container['request_type']; + } + + /** + * Sets request_type + * + * @param string|null $request_type 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. + * + * @return self + */ + public function setRequestType($request_type) + { + if (is_null($request_type)) { + throw new \InvalidArgumentException('non-nullable request_type cannot be null'); + } + $this->container['request_type'] = $request_type; + + return $this; + } + + /** + * Gets call_id + * + * @return string|null + */ + public function getCallId() + { + return $this->container['call_id']; + } + + /** + * Sets call_id + * + * @param string|null $call_id Unique ID for this Call, generated by FreeClimb. This is the call leg which ended its gRPC session. + * + * @return self + */ + public function setCallId($call_id) + { + if (is_null($call_id)) { + throw new \InvalidArgumentException('non-nullable call_id cannot be null'); + } + $this->container['call_id'] = $call_id; + + return $this; + } + + /** + * Gets account_id + * + * @return string|null + */ + public function getAccountId() + { + return $this->container['account_id']; + } + + /** + * Sets account_id + * + * @param string|null $account_id Account ID associated with your account. + * + * @return self + */ + public function setAccountId($account_id) + { + if (is_null($account_id)) { + throw new \InvalidArgumentException('non-nullable account_id cannot be null'); + } + $this->container['account_id'] = $account_id; + + return $this; + } + + /** + * Gets from + * + * @return string|null + */ + public function getFrom() + { + return $this->container['from']; + } + + /** + * Sets from + * + * @param string|null $from Phone number of the party that initiated the Call (in E.164 format). + * + * @return self + */ + public function setFrom($from) + { + if (is_null($from)) { + throw new \InvalidArgumentException('non-nullable from cannot be null'); + } + $this->container['from'] = $from; + + return $this; + } + + /** + * Gets to + * + * @return string|null + */ + public function getTo() + { + return $this->container['to']; + } + + /** + * Sets to + * + * @param string|null $to Phone number provisioned to you and to which this Call is directed (in E.164 format). + * + * @return self + */ + public function setTo($to) + { + if (is_null($to)) { + throw new \InvalidArgumentException('non-nullable to cannot be null'); + } + $this->container['to'] = $to; + + return $this; + } + + /** + * Gets call_status + * + * @return \FreeClimb\Api\Model\CallStatus|null + */ + public function getCallStatus() + { + return $this->container['call_status']; + } + + /** + * Sets call_status + * + * @param \FreeClimb\Api\Model\CallStatus|null $call_status call_status + * + * @return self + */ + public function setCallStatus($call_status) + { + if (is_null($call_status)) { + array_push($this->openAPINullablesSetToNull, 'call_status'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('call_status', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['call_status'] = $call_status; + + return $this; + } + + /** + * Gets direction + * + * @return \FreeClimb\Api\Model\CallDirection|null + */ + public function getDirection() + { + return $this->container['direction']; + } + + /** + * Sets direction + * + * @param \FreeClimb\Api\Model\CallDirection|null $direction direction + * + * @return self + */ + public function setDirection($direction) + { + if (is_null($direction)) { + array_push($this->openAPINullablesSetToNull, 'direction'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('direction', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['direction'] = $direction; + + return $this; + } + + /** + * Gets conference_id + * + * @return string|null + */ + public function getConferenceId() + { + return $this->container['conference_id']; + } + + /** + * Sets conference_id + * + * @param string|null $conference_id This is only populated if request pertains to a Conference. Otherwise, it is set to null. + * + * @return self + */ + public function setConferenceId($conference_id) + { + if (is_null($conference_id)) { + array_push($this->openAPINullablesSetToNull, 'conference_id'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('conference_id', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['conference_id'] = $conference_id; + + return $this; + } + + /** + * Gets queue_id + * + * @return string|null + */ + public function getQueueId() + { + return $this->container['queue_id']; + } + + /** + * Sets queue_id + * + * @param string|null $queue_id This is only populated if the request pertains to a Queue. Otherwise, it is set to null. + * + * @return self + */ + public function setQueueId($queue_id) + { + if (is_null($queue_id)) { + array_push($this->openAPINullablesSetToNull, 'queue_id'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('queue_id', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['queue_id'] = $queue_id; + + return $this; + } + /** + * Returns true if offset exists. False otherwise. + * + * @param integer $offset Offset + * + * @return boolean + */ + public function offsetExists($offset): bool + { + return isset($this->container[$offset]); + } + + /** + * Gets offset. + * + * @param integer $offset Offset + * + * @return mixed|null + */ + #[\ReturnTypeWillChange] + public function offsetGet($offset) + { + return $this->container[$offset] ?? null; + } + + /** + * Sets value based on offset. + * + * @param int|null $offset Offset + * @param mixed $value Value to be set + * + * @return void + */ + public function offsetSet($offset, $value): void + { + if (is_null($offset)) { + $this->container[] = $value; + } else { + $this->container[$offset] = $value; + } + } + + /** + * Unsets offset. + * + * @param integer $offset Offset + * + * @return void + */ + public function offsetUnset($offset): void + { + unset($this->container[$offset]); + } + + /** + * Serializes the object to a value that can be serialized natively by json_encode(). + * @link https://www.php.net/manual/en/jsonserializable.jsonserialize.php + * + * @return mixed Returns data which can be serialized by json_encode(), which is a value + * of any type other than a resource. + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return ObjectSerializer::sanitizeForSerialization($this); + } + + /** + * Gets the string presentation of the object + * + * @return string + */ + public function __toString() + { + return json_encode( + ObjectSerializer::sanitizeForSerialization($this), + JSON_PRETTY_PRINT + ); + } + + /** + * Gets a header-safe presentation of the object + * + * @return string + */ + public function toHeaderValue() + { + return json_encode(ObjectSerializer::sanitizeForSerialization($this)); + } + + public static function deserialize(string $payload) + { + $content = json_decode($payload, false, 512, JSON_THROW_ON_ERROR); + return ObjectSerializer::deserialize($content, '\FreeClimb\Api\Model\AudioStreamWebhook', []); + } +} + + diff --git a/lib/Model/ConferenceResult.php b/lib/Model/ConferenceResult.php index 8470473..76ab4d9 100644 --- a/lib/Model/ConferenceResult.php +++ b/lib/Model/ConferenceResult.php @@ -605,7 +605,7 @@ public function getPlayBeep() /** * Sets play_beep * - * @param \FreeClimb\Api\Model\PlayBeep|null $play_beep play_beep + * @param \FreeClimb\Api\Model\PlayBeep|null $play_beep Setting that controls when a beep is played. One of: always, never, entryOnly, exitOnly. Defaults to always. * * @return self */ diff --git a/lib/Model/IncomingNumberResult.php b/lib/Model/IncomingNumberResult.php index 281cd7d..b87b6e1 100644 --- a/lib/Model/IncomingNumberResult.php +++ b/lib/Model/IncomingNumberResult.php @@ -121,7 +121,7 @@ class IncomingNumberResult implements ModelInterface, ArrayAccess, \JsonSerializ 'region' => true, 'country' => true, 'offnet' => true, - 'tfn' => false + 'tfn' => true ]; /** @@ -850,7 +850,14 @@ public function getTfn() public function setTfn($tfn) { if (is_null($tfn)) { - throw new \InvalidArgumentException('non-nullable tfn cannot be null'); + array_push($this->openAPINullablesSetToNull, 'tfn'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('tfn', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } } $this->container['tfn'] = $tfn; diff --git a/lib/Model/MessageResult.php b/lib/Model/MessageResult.php index 4c94fa4..cd9ac55 100644 --- a/lib/Model/MessageResult.php +++ b/lib/Model/MessageResult.php @@ -131,7 +131,7 @@ class MessageResult implements ModelInterface, ArrayAccess, \JsonSerializable 'campaign_id' => true, 'segment_count' => true, 'media_urls' => true, - 'tfn' => false, + 'tfn' => true, 'phone_number_id' => true, 'application_id' => true ]; @@ -953,7 +953,14 @@ public function getTfn() public function setTfn($tfn) { if (is_null($tfn)) { - throw new \InvalidArgumentException('non-nullable tfn cannot be null'); + array_push($this->openAPINullablesSetToNull, 'tfn'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('tfn', $nullablesSetToNull, true); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } } $this->container['tfn'] = $tfn; diff --git a/lib/Model/RequestType.php b/lib/Model/RequestType.php index 738e25b..36b2af8 100644 --- a/lib/Model/RequestType.php +++ b/lib/Model/RequestType.php @@ -57,6 +57,7 @@ class RequestType public const DEQUEUE = "dequeue"; public const QUEUE_WAIT = "queueWait"; public const ADD_TO_QUEUE_NOTIFICATION = "addToQueueNotification"; + public const AUDIO_STREAM = "audioStream"; public const REMOVE_FROM_QUEUE_NOTIFICATION = "removeFromQueueNotification"; public const CALL_STATUS = "callStatus"; public const CREATE_CONFERENCE = "createConference"; @@ -90,6 +91,7 @@ public static function getAllowableEnumValues() self::DEQUEUE, self::QUEUE_WAIT, self::ADD_TO_QUEUE_NOTIFICATION, + self::AUDIO_STREAM, self::REMOVE_FROM_QUEUE_NOTIFICATION, self::CALL_STATUS, self::CREATE_CONFERENCE, diff --git a/openapi.json b/openapi.json index c759411..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": [ @@ -3052,7 +3143,7 @@ "nullable": true }, "tfn": { - "$ref": "#/components/schemas/TFN", + "allOf": [{ "$ref": "#/components/schemas/TFN" }], "nullable": true } } @@ -3473,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": { @@ -3685,7 +3776,7 @@ "nullable": true }, "tfn": { - "$ref": "#/components/schemas/TFN", + "allOf": [{ "$ref": "#/components/schemas/TFN" }], "nullable": true }, "phoneNumberId": { diff --git a/test/Model/AudioStreamTest.php b/test/Model/AudioStreamTest.php new file mode 100644 index 0000000..50c9ea6 --- /dev/null +++ b/test/Model/AudioStreamTest.php @@ -0,0 +1,114 @@ +AudioStream = new \FreeClimb\Api\Model\AudioStream(); + } + + /** + * Clean up after running each test case + */ + public function tearDown(): void + { + } + + /** + * Clean up after running all test cases + */ + public static function tearDownAfterClass(): void + { + } + + + public function testPropertyLocation() + { + + $this->AudioStream->setLocation('TS'); + $this->assertEquals('TS', $this->AudioStream->getLocation()); + $this->assertIsString($this->AudioStream->getLocation()); + } + + public function testPropertyActionUrl() + { + + $this->AudioStream->setActionUrl('TS'); + $this->assertEquals('TS', $this->AudioStream->getActionUrl()); + $this->assertIsString($this->AudioStream->getActionUrl()); + } + + public function testPropertyContentType() + { + + $this->AudioStream->setContentType('TS'); + $this->assertEquals('TS', $this->AudioStream->getContentType()); + $this->assertIsString($this->AudioStream->getContentType()); + } + + public function testPropertyMetaData() + { + $this->AudioStream->setmetaData([]); + $this->assertEquals([], $this->AudioStream->getmetaData()); + $this->assertIsArray($this->AudioStream->getmetaData()); + } + + public function testPropertyPrivacyMode() + { + $this->AudioStream->setprivacyMode(false); + $this->assertFalse($this->AudioStream->getprivacyMode()); + $this->assertIsBool($this->AudioStream->getprivacyMode()); + } +} diff --git a/test/Model/AudioStreamWebhookTest.php b/test/Model/AudioStreamWebhookTest.php new file mode 100644 index 0000000..50b981f --- /dev/null +++ b/test/Model/AudioStreamWebhookTest.php @@ -0,0 +1,170 @@ +AudioStreamWebhook = new \FreeClimb\Api\Model\AudioStreamWebhook(); + } + + /** + * Clean up after running each test case + */ + public function tearDown(): void + { + } + + /** + * Clean up after running all test cases + */ + public static function tearDownAfterClass(): void + { + } + + + public function testPropertyRequestType() + { + + $this->AudioStreamWebhook->setRequestType('TS'); + $this->assertEquals('TS', $this->AudioStreamWebhook->getRequestType()); + $this->assertIsString($this->AudioStreamWebhook->getRequestType()); + } + + public function testPropertyCallId() + { + + $this->AudioStreamWebhook->setCallId('TS'); + $this->assertEquals('TS', $this->AudioStreamWebhook->getCallId()); + $this->assertIsString($this->AudioStreamWebhook->getCallId()); + } + + public function testPropertyAccountId() + { + + $this->AudioStreamWebhook->setAccountId('TS'); + $this->assertEquals('TS', $this->AudioStreamWebhook->getAccountId()); + $this->assertIsString($this->AudioStreamWebhook->getAccountId()); + } + + public function testPropertyFrom() + { + + $this->AudioStreamWebhook->setFrom('TS'); + $this->assertEquals('TS', $this->AudioStreamWebhook->getFrom()); + $this->assertIsString($this->AudioStreamWebhook->getFrom()); + } + + public function testPropertyTo() + { + + $this->AudioStreamWebhook->setTo('TS'); + $this->assertEquals('TS', $this->AudioStreamWebhook->getTo()); + $this->assertIsString($this->AudioStreamWebhook->getTo()); + } + + public function testPropertyCallStatus() + { + $this->AudioStreamWebhook->setcallStatus(\FreeClimb\Api\Model\CallStatus::QUEUED); + $this->assertEquals(\FreeClimb\Api\Model\CallStatus::QUEUED, $this->AudioStreamWebhook->getcallStatus()); + $this->AudioStreamWebhook->setcallStatus(\FreeClimb\Api\Model\CallStatus::RINGING); + $this->assertEquals(\FreeClimb\Api\Model\CallStatus::RINGING, $this->AudioStreamWebhook->getcallStatus()); + $this->AudioStreamWebhook->setcallStatus(\FreeClimb\Api\Model\CallStatus::IN_PROGRESS); + $this->assertEquals(\FreeClimb\Api\Model\CallStatus::IN_PROGRESS, $this->AudioStreamWebhook->getcallStatus()); + $this->AudioStreamWebhook->setcallStatus(\FreeClimb\Api\Model\CallStatus::CANCELED); + $this->assertEquals(\FreeClimb\Api\Model\CallStatus::CANCELED, $this->AudioStreamWebhook->getcallStatus()); + $this->AudioStreamWebhook->setcallStatus(\FreeClimb\Api\Model\CallStatus::COMPLETED); + $this->assertEquals(\FreeClimb\Api\Model\CallStatus::COMPLETED, $this->AudioStreamWebhook->getcallStatus()); + $this->AudioStreamWebhook->setcallStatus(\FreeClimb\Api\Model\CallStatus::FAILED); + $this->assertEquals(\FreeClimb\Api\Model\CallStatus::FAILED, $this->AudioStreamWebhook->getcallStatus()); + $this->AudioStreamWebhook->setcallStatus(\FreeClimb\Api\Model\CallStatus::BUSY); + $this->assertEquals(\FreeClimb\Api\Model\CallStatus::BUSY, $this->AudioStreamWebhook->getcallStatus()); + $this->AudioStreamWebhook->setcallStatus(\FreeClimb\Api\Model\CallStatus::NO_ANSWER); + $this->assertEquals(\FreeClimb\Api\Model\CallStatus::NO_ANSWER, $this->AudioStreamWebhook->getcallStatus()); + } + + public function testPropertyDirection() + { + $this->AudioStreamWebhook->setdirection(\FreeClimb\Api\Model\CallDirection::INBOUND); + $this->assertEquals(\FreeClimb\Api\Model\CallDirection::INBOUND, $this->AudioStreamWebhook->getdirection()); + $this->AudioStreamWebhook->setdirection(\FreeClimb\Api\Model\CallDirection::OUTBOUND_API); + $this->assertEquals(\FreeClimb\Api\Model\CallDirection::OUTBOUND_API, $this->AudioStreamWebhook->getdirection()); + $this->AudioStreamWebhook->setdirection(\FreeClimb\Api\Model\CallDirection::OUTBOUND_DIAL); + $this->assertEquals(\FreeClimb\Api\Model\CallDirection::OUTBOUND_DIAL, $this->AudioStreamWebhook->getdirection()); + } + + public function testPropertyConferenceId() + { + + $this->AudioStreamWebhook->setConferenceId('TS'); + $this->assertEquals('TS', $this->AudioStreamWebhook->getConferenceId()); + $this->assertIsString($this->AudioStreamWebhook->getConferenceId()); + } + + public function testPropertyQueueId() + { + + $this->AudioStreamWebhook->setQueueId('TS'); + $this->assertEquals('TS', $this->AudioStreamWebhook->getQueueId()); + $this->assertIsString($this->AudioStreamWebhook->getQueueId()); + } + /** + * Test attribute "AudioStreamWebhook::deserialize" + */ + public function testDeserializeAudioStreamWebhook() + { + $json = "{\"requestType\":\"audioStream\"}"; + $this->assertInstanceOf(\FreeClimb\Api\Model\AudioStreamWebhook::class, \FreeClimb\Api\Model\AudioStreamWebhook::deserialize($json)); + } +}