diff --git a/Bandwidth.Standard.sln b/Bandwidth.Standard.sln
index 0f431e7d..069bd587 100644
--- a/Bandwidth.Standard.sln
+++ b/Bandwidth.Standard.sln
@@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bandwidth.Standard", "src\Bandwidth.Standard\Bandwidth.Standard.csproj", "{0549B4D2-AA34-4364-B222-071E3996A3CD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bandwidth.Standard", "src\Bandwidth.Standard\Bandwidth.Standard.csproj", "{BB69D1F9-DD5B-4C98-A9DA-F49165DCD0DA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bandwidth.Standard.Test", "src\Bandwidth.Standard.Test\Bandwidth.Standard.Test.csproj", "{19F1DEBC-DE5E-4517-8062-F000CD499087}"
EndProject
@@ -12,10 +12,10 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {0549B4D2-AA34-4364-B222-071E3996A3CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0549B4D2-AA34-4364-B222-071E3996A3CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0549B4D2-AA34-4364-B222-071E3996A3CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0549B4D2-AA34-4364-B222-071E3996A3CD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BB69D1F9-DD5B-4C98-A9DA-F49165DCD0DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BB69D1F9-DD5B-4C98-A9DA-F49165DCD0DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BB69D1F9-DD5B-4C98-A9DA-F49165DCD0DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BB69D1F9-DD5B-4C98-A9DA-F49165DCD0DA}.Release|Any CPU.Build.0 = Release|Any CPU
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/api/openapi.yaml b/api/openapi.yaml
index 9deea06c..e1c30bbb 100644
--- a/api/openapi.yaml
+++ b/api/openapi.yaml
@@ -389,7 +389,10 @@ paths:
url: https://messaging.bandwidth.com/api/v2
/users/{accountId}/messages:
get:
- description: Returns a list of messages based on query parameters.
+ description: |
+ Returns a list of messages based on query parameters.
+
+ **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header.
operationId: listMessages
parameters:
- description: Your Bandwidth Account ID.
@@ -699,6 +702,12 @@ paths:
schema:
$ref: '#/components/schemas/messagingRequestError'
description: Not Found
+ "405":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/messagingRequestError'
+ description: Method Not Allowed
"415":
content:
application/json:
@@ -708,9 +717,21 @@ paths:
"429":
content:
application/json:
+ example:
+ type: rate_limit_exceeded
+ description: Rate limit exceeded. Wait for Retry-After time before
+ sending another request.
schema:
$ref: '#/components/schemas/messagingRequestError'
description: Too Many Requests
+ headers:
+ Retry-After:
+ description: The number of seconds to wait before retrying the request.
+ explode: false
+ schema:
+ example: 300
+ type: integer
+ style: simple
"500":
content:
application/json:
@@ -7409,6 +7430,24 @@ components:
schema:
$ref: '#/components/schemas/multiChannelError'
description: Internal Server Error
+ listMessagesTooManyRequestsError:
+ content:
+ application/json:
+ example:
+ type: rate_limit_exceeded
+ description: Rate limit exceeded. Wait for Retry-After time before sending
+ another request.
+ schema:
+ $ref: '#/components/schemas/messagingRequestError'
+ description: Too Many Requests
+ headers:
+ Retry-After:
+ description: The number of seconds to wait before retrying the request.
+ explode: false
+ schema:
+ example: 300
+ type: integer
+ style: simple
createCallResponse:
content:
application/json:
@@ -8735,7 +8774,9 @@ components:
rbmMessageMedia:
properties:
media:
- $ref: '#/components/schemas/rbmMessageContentFile'
+ items:
+ $ref: '#/components/schemas/rbmMessageContentFile'
+ type: array
suggestions:
description: An array of suggested actions for the recipient.
items:
@@ -13623,13 +13664,11 @@ components:
description: Unique identifier (UUID) generated by Bandwidth to assist in tracking
the verification status of a toll-free number - included in all webhook payloads.
example: acde070d-8c4c-4f0d-9d8a-162843c10333
- format: uuid
type: string
internalTicketNumberForWebhook:
description: Unique identifier (UUID) generated by Bandwidth to assist in tracking
the verification status of a toll-free number.
example: acde070d-8c4c-4f0d-9d8a-162843c10333
- format: uuid
type: string
businessContactPhoneNumber:
description: Contact telephone number
@@ -13929,7 +13968,6 @@ components:
description: Unique identifier (UUID) generated by Bandwidth to assist in
tracking the verification status of a toll-free number.
example: acde070d-8c4c-4f0d-9d8a-162843c10333
- format: uuid
type: string
type: object
verificationDenialWebhook:
@@ -13965,7 +14003,6 @@ components:
description: Unique identifier (UUID) generated by Bandwidth to assist in
tracking the verification status of a toll-free number.
example: acde070d-8c4c-4f0d-9d8a-162843c10333
- format: uuid
type: string
phoneNumber:
description: Toll-free telephone number in E.164 format.
@@ -14015,7 +14052,6 @@ components:
description: Unique identifier (UUID) generated by Bandwidth to assist in
tracking the verification status of a toll-free number.
example: acde070d-8c4c-4f0d-9d8a-162843c10333
- format: uuid
type: string
type: object
blockedWebhook:
@@ -14038,7 +14074,6 @@ components:
description: Unique identifier (UUID) generated by Bandwidth to assist in
tracking the verification status of a toll-free number.
example: acde070d-8c4c-4f0d-9d8a-162843c10333
- format: uuid
type: string
blocked:
description: Whether a Toll-Free Verification is blocked. This attribute
@@ -14522,7 +14557,6 @@ components:
tracking the verification status of a toll-free number - included in all
webhook payloads.
example: acde070d-8c4c-4f0d-9d8a-162843c10333
- format: uuid
type: string
declineReasonDescription:
description: Explanation for why a verification request was declined.
diff --git a/bandwidth.yml b/bandwidth.yml
index 22b13cec..7c08f291 100644
--- a/bandwidth.yml
+++ b/bandwidth.yml
@@ -163,7 +163,13 @@ paths:
/users/{accountId}/messages:
get:
summary: List Messages
- description: Returns a list of messages based on query parameters.
+ description: >
+ Returns a list of messages based on query parameters.
+
+
+ **Rate Limit:** This endpoint is rate limited to 3500 requests per 5
+ minutes per Source IP address. Exceeding the limit returns HTTP 429 with
+ a `Retry-After` header.
operationId: listMessages
tags:
- Messages
@@ -207,10 +213,12 @@ paths:
$ref: '#/components/responses/messagingForbiddenError'
'404':
$ref: '#/components/responses/messagingNotFoundError'
+ '405':
+ $ref: '#/components/responses/messagingMethodNotAllowedError'
'415':
$ref: '#/components/responses/messagingInvalidMediaTypeError'
'429':
- $ref: '#/components/responses/messagingTooManyRequestsError'
+ $ref: '#/components/responses/listMessagesTooManyRequestsError'
'500':
$ref: '#/components/responses/messagingInternalServerError'
post:
@@ -2257,7 +2265,9 @@ components:
type: object
properties:
media:
- $ref: '#/components/schemas/rbmMessageContentFile'
+ type: array
+ items:
+ $ref: '#/components/schemas/rbmMessageContentFile'
suggestions:
$ref: '#/components/schemas/multiChannelFullActions'
required:
@@ -5875,7 +5885,6 @@ components:
type: object
internalTicketNumber:
type: string
- format: uuid
description: >-
Unique identifier (UUID) generated by Bandwidth to assist in tracking
the verification status of a toll-free number - included in all webhook
@@ -5883,7 +5892,6 @@ components:
example: acde070d-8c4c-4f0d-9d8a-162843c10333
internalTicketNumberForWebhook:
type: string
- format: uuid
description: >-
Unique identifier (UUID) generated by Bandwidth to assist in tracking
the verification status of a toll-free number.
@@ -6752,6 +6760,21 @@ components:
- type: internal-server-error
description: Internal server error. No further information available
source: {}
+ listMessagesTooManyRequestsError:
+ description: Too Many Requests
+ headers:
+ Retry-After:
+ description: The number of seconds to wait before retrying the request.
+ schema:
+ type: integer
+ example: 300
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/messagingRequestError"
+ example:
+ type: rate_limit_exceeded
+ description: Rate limit exceeded. Wait for Retry-After time before sending another request.
createCallResponse:
description: Created
headers:
diff --git a/docs/BlockedWebhook.md b/docs/BlockedWebhook.md
index 2447c63a..6c1987a3 100644
--- a/docs/BlockedWebhook.md
+++ b/docs/BlockedWebhook.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
**AccountId** | **string** | User's account ID. | [optional]
**PhoneNumber** | **string** | Toll-free telephone number in E.164 format. | [optional]
**Status** | **TfvCallbackStatusEnum** | | [optional]
-**InternalTicketNumber** | **Guid** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number. | [optional]
+**InternalTicketNumber** | **string** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number. | [optional]
**Blocked** | **bool** | Whether a Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked. | [optional]
**BlockedReason** | **string** | The reason why the Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked. | [optional]
diff --git a/docs/FailureWebhook.md b/docs/FailureWebhook.md
index 74fefe57..ee69d41d 100644
--- a/docs/FailureWebhook.md
+++ b/docs/FailureWebhook.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**ErrorCode** | **string** | An error code indicating what error was encountered. This code can be interpreted as an HTTP status code in regards to the error that was encountered. | [optional]
**ErrorMessage** | **string** | A description of the error that was encountered. | [optional]
**Errors** | **List<string>** | Details of the errors that were encountered when processing the request. | [optional]
-**InternalTicketNumber** | **Guid** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number. | [optional]
+**InternalTicketNumber** | **string** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number. | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/docs/MessagesApi.md b/docs/MessagesApi.md
index ddd281a3..b850fd91 100644
--- a/docs/MessagesApi.md
+++ b/docs/MessagesApi.md
@@ -121,7 +121,7 @@ catch (ApiException e)
List Messages
-Returns a list of messages based on query parameters.
+Returns a list of messages based on query parameters. **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header.
### Example
```csharp
@@ -267,8 +267,9 @@ catch (ApiException e)
| **401** | Unauthorized | - |
| **403** | Forbidden | - |
| **404** | Not Found | - |
+| **405** | Method Not Allowed | - |
| **415** | Unsupported Media Type | - |
-| **429** | Too Many Requests | - |
+| **429** | Too Many Requests | * Retry-After - The number of seconds to wait before retrying the request.
|
| **500** | Internal Server Error | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
diff --git a/docs/MultiChannelChannelListRBMObjectAllOfContent.md b/docs/MultiChannelChannelListRBMObjectAllOfContent.md
index bd919a25..74015b4a 100644
--- a/docs/MultiChannelChannelListRBMObjectAllOfContent.md
+++ b/docs/MultiChannelChannelListRBMObjectAllOfContent.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Text** | **string** | The text associated with the message. Must be 3270 characters or less |
**Suggestions** | [**List<MultiChannelAction>**](MultiChannelAction.md) | An array of suggested actions for the recipient. | [optional]
-**Media** | [**RbmMessageContentFile**](RbmMessageContentFile.md) | |
+**Media** | [**List<RbmMessageContentFile>**](RbmMessageContentFile.md) | |
**Orientation** | **StandaloneCardOrientationEnum** | |
**ThumbnailImageAlignment** | **ThumbnailAlignmentEnum** | |
**CardContent** | [**RbmCardContent**](RbmCardContent.md) | |
diff --git a/docs/RbmMessageMedia.md b/docs/RbmMessageMedia.md
index 7a0e5aad..cc1c7349 100644
--- a/docs/RbmMessageMedia.md
+++ b/docs/RbmMessageMedia.md
@@ -4,7 +4,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**Media** | [**RbmMessageContentFile**](RbmMessageContentFile.md) | |
+**Media** | [**List<RbmMessageContentFile>**](RbmMessageContentFile.md) | |
**Suggestions** | [**List<MultiChannelAction>**](MultiChannelAction.md) | An array of suggested actions for the recipient. | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/docs/TfvStatus.md b/docs/TfvStatus.md
index 3986ec94..8ffb666f 100644
--- a/docs/TfvStatus.md
+++ b/docs/TfvStatus.md
@@ -6,7 +6,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**PhoneNumber** | **string** | Toll-free telephone number in E.164 format. | [optional]
**Status** | **TfvStatusEnum** | | [optional]
-**InternalTicketNumber** | **Guid** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number - included in all webhook payloads. | [optional]
+**InternalTicketNumber** | **string** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number - included in all webhook payloads. | [optional]
**DeclineReasonDescription** | **string** | Explanation for why a verification request was declined. | [optional]
**ResubmitAllowed** | **bool** | Whether a Toll-Free Verification request qualifies for resubmission via PUT. | [optional]
**CreatedDateTime** | **DateTime** | Date and time the verification request was created. | [optional]
diff --git a/docs/VerificationDenialWebhook.md b/docs/VerificationDenialWebhook.md
index 8764138c..87564364 100644
--- a/docs/VerificationDenialWebhook.md
+++ b/docs/VerificationDenialWebhook.md
@@ -8,7 +8,7 @@ Name | Type | Description | Notes
**AdditionalDenialReasons** | [**List<AdditionalDenialReason>**](AdditionalDenialReason.md) | An optional list of denial reasons in addition to declineReasonDescription when multiple reasons apply. | [optional]
**DeclineReasonDescription** | **string** | Explanation for why a verification request was declined. | [optional]
**DenialStatusCode** | **int** | Reason code for denial. | [optional]
-**InternalTicketNumber** | **Guid** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number. | [optional]
+**InternalTicketNumber** | **string** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number. | [optional]
**PhoneNumber** | **string** | Toll-free telephone number in E.164 format. | [optional]
**ResubmitAllowed** | **bool** | Whether a Toll-Free Verification request qualifies for resubmission via PUT. | [optional]
**Status** | **string** | | [optional] [default to "UNVERIFIED"]
diff --git a/docs/VerificationWebhook.md b/docs/VerificationWebhook.md
index beb3236c..36710752 100644
--- a/docs/VerificationWebhook.md
+++ b/docs/VerificationWebhook.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
**AccountId** | **string** | User's account ID. | [optional]
**PhoneNumber** | **string** | Toll-free telephone number in E.164 format. | [optional]
**Status** | **TfvCallbackStatusEnum** | | [optional]
-**InternalTicketNumber** | **Guid** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number. | [optional]
+**InternalTicketNumber** | **string** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number. | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/Bandwidth.Standard.Test/Smoke/MultiChannelIntegrationTests.cs b/src/Bandwidth.Standard.Test/Smoke/MultiChannelIntegrationTests.cs
index fd379c72..bf8db67a 100644
--- a/src/Bandwidth.Standard.Test/Smoke/MultiChannelIntegrationTests.cs
+++ b/src/Bandwidth.Standard.Test/Smoke/MultiChannelIntegrationTests.cs
@@ -81,14 +81,14 @@ public void CreateMultiChannelSMSMessageTest()
Assert.IsType(response.Data);
Assert.IsType>(response.Data.Links);
Assert.IsType(response.Data.Data);
- Assert.IsType(response.Data.Data.Id);
+ Assert.IsType(response.Data.Data.Id);
Assert.IsType(response.Data.Data.Time);
Assert.IsType(response.Data.Data.Direction);
- Assert.Equal(response.Data.Data.Direction, MessageDirectionEnum.Out);
- Assert.IsType>(response.Data.Data.To);
- Assert.IsType(response.Data.Data.Tag);
+ Assert.Equal(MessageDirectionEnum.Out, response.Data.Data.Direction);
+ Assert.IsType>(response.Data.Data.To);
+ Assert.IsType(response.Data.Data.Tag);
Assert.IsType(response.Data.Data.Priority);
- Assert.Equal(response.Data.Data.Priority, PriorityEnum.High);
+ Assert.Equal(PriorityEnum.High, response.Data.Data.Priority);
Assert.IsType(response.Data.Data.Expiration);
Assert.IsType>(response.Data.Data.ChannelList);
@@ -133,14 +133,14 @@ public void CreateMultiChannelMMSMessageTest()
Assert.IsType(response.Data);
Assert.IsType>(response.Data.Links);
Assert.IsType(response.Data.Data);
- Assert.IsType(response.Data.Data.Id);
+ Assert.IsType(response.Data.Data.Id);
Assert.IsType(response.Data.Data.Time);
Assert.IsType(response.Data.Data.Direction);
- Assert.Equal(response.Data.Data.Direction, MessageDirectionEnum.Out);
- Assert.IsType>(response.Data.Data.To);
- Assert.IsType(response.Data.Data.Tag);
+ Assert.Equal(MessageDirectionEnum.Out, response.Data.Data.Direction);
+ Assert.IsType>(response.Data.Data.To);
+ Assert.IsType(response.Data.Data.Tag);
Assert.IsType(response.Data.Data.Priority);
- Assert.Equal(response.Data.Data.Priority, PriorityEnum.High);
+ Assert.Equal(PriorityEnum.High, response.Data.Data.Priority);
Assert.IsType(response.Data.Data.Expiration);
Assert.IsType>(response.Data.Data.ChannelList);
@@ -149,12 +149,12 @@ public void CreateMultiChannelMMSMessageTest()
}
///
- /// Test CreateMultiChannelRBMMessage
+ /// Test CreateMultiChannelRBMTextMessage
///
[Fact]
- public void CreateMultiChannelRBMMessageTest()
+ public void CreateMultiChannelRBMTextMessageTest()
{
- MultiChannelChannelListRequestObject channelListObject = new MultiChannelChannelListRequestObject(
+ MultiChannelChannelListRequestObject channelListRBMObject = new MultiChannelChannelListRequestObject(
new MultiChannelChannelListRBMObject(
from: bwNumber,
applicationId: messagingApplicationId,
@@ -166,7 +166,7 @@ public void CreateMultiChannelRBMMessageTest()
new MultiChannelAction(new RbmActionDial(
type: RbmActionTypeEnum.DIALPHONE,
text: "Call Us",
- postbackData: new byte[]{1, 2, 3},
+ postbackData: new byte[] {1, 2, 3},
phoneNumber: bwNumber
))
}
@@ -180,7 +180,7 @@ public void CreateMultiChannelRBMMessageTest()
tag: "tag",
priority: PriorityEnum.High,
expiration: DateTime.UtcNow.AddMinutes(1),
- channelList: new List { channelListObject }
+ channelList: new List { channelListRBMObject }
);
var response = instance.CreateMultiChannelMessageWithHttpInfo(accountId, multiChannelMessageRequest);
@@ -190,19 +190,307 @@ public void CreateMultiChannelRBMMessageTest()
Assert.IsType(response.Data);
Assert.IsType>(response.Data.Links);
Assert.IsType(response.Data.Data);
- Assert.IsType(response.Data.Data.Id);
+ Assert.IsType(response.Data.Data.Id);
Assert.IsType(response.Data.Data.Time);
Assert.IsType(response.Data.Data.Direction);
- Assert.Equal(response.Data.Data.Direction, MessageDirectionEnum.Out);
- Assert.IsType>(response.Data.Data.To);
- Assert.IsType(response.Data.Data.Tag);
+ Assert.Equal(MessageDirectionEnum.Out, response.Data.Data.Direction);
+ Assert.IsType>(response.Data.Data.To);
+ Assert.IsType(response.Data.Data.Tag);
Assert.IsType(response.Data.Data.Priority);
- Assert.Equal(response.Data.Data.Priority, PriorityEnum.High);
+ Assert.Equal(PriorityEnum.High, response.Data.Data.Priority);
Assert.IsType(response.Data.Data.Expiration);
Assert.IsType>(response.Data.Data.ChannelList);
+ Assert.IsType(response.Data.Data.ChannelList[0].ActualInstance);
+ var channelListObject = (MultiChannelChannelListRBMResponseObject)response.Data.Data.ChannelList[0].ActualInstance;
+ Assert.Equal(bwNumber, channelListObject.From);
+ Assert.Equal(messagingApplicationId, channelListObject.ApplicationId);
+ Assert.Equal(MultiChannelMessageChannelEnum.RBM, channelListObject.Channel);
+ Assert.Equal(bwNumber, channelListObject.Owner);
+ Assert.IsType(channelListObject.Content.ActualInstance);
+ var rbmContent = (RbmMessageContentText)channelListObject.Content.ActualInstance;
+ Assert.IsType(rbmContent.Text);
+ Assert.IsType>(rbmContent.Suggestions);
+ Assert.IsType(rbmContent.Suggestions[0]);
+ Assert.IsType(rbmContent.Suggestions[0].ActualInstance);
+ var rbmActionDial = (RbmActionDial)rbmContent.Suggestions[0].ActualInstance;
+ Assert.Equal(RbmActionTypeEnum.DIALPHONE, rbmActionDial.Type);
+ Assert.IsType(rbmActionDial.Text);
+ Assert.IsType(rbmActionDial.PostbackData);
+ Assert.IsType(rbmActionDial.PhoneNumber);
+ }
- // Add more assertions when C# generator supports discriminator mapping
- // Assert.IsType(response.Data.Data.ChannelList[0].ActualInstance);
+ ///
+ /// Test CreateMultiChannelRBMMediaMessage
+ ///
+ [Fact]
+ public void CreateMultiChannelRBMMediaMessageTest()
+ {
+ MultiChannelChannelListRequestObject channelListRBMObject = new MultiChannelChannelListRequestObject(
+ new MultiChannelChannelListRBMObject(
+ from: bwNumber,
+ applicationId: messagingApplicationId,
+ channel: MultiChannelMessageChannelEnum.RBM,
+ content: new MultiChannelChannelListRBMObjectAllOfContent(
+ new RbmMessageMedia(
+ media: new List {
+ new RbmMessageContentFile(
+ fileUrl: "https://test.url/",
+ thumbnailUrl: "https://test.url/"
+ )
+ },
+ suggestions: new List {
+ new MultiChannelAction(new RbmActionDial(
+ type: RbmActionTypeEnum.DIALPHONE,
+ text: "Call Us",
+ postbackData: new byte[] {1, 2, 3},
+ phoneNumber: bwNumber
+ ))
+ }
+ )
+ )
+ )
+ );
+
+ MultiChannelMessageRequest multiChannelMessageRequest = new MultiChannelMessageRequest(
+ to: Environment.GetEnvironmentVariable("USER_NUMBER"),
+ tag: "tag",
+ priority: PriorityEnum.High,
+ expiration: DateTime.UtcNow.AddMinutes(1),
+ channelList: new List { channelListRBMObject }
+ );
+
+ var response = instance.CreateMultiChannelMessageWithHttpInfo(accountId, multiChannelMessageRequest);
+ Assert.IsType>(response);
+ Assert.Equal(HttpStatusCode.Accepted, response.StatusCode);
+ Assert.NotNull(response.Data);
+ Assert.IsType(response.Data);
+ Assert.IsType>(response.Data.Links);
+ Assert.IsType(response.Data.Data);
+ Assert.IsType(response.Data.Data.Id);
+ Assert.IsType(response.Data.Data.Time);
+ Assert.IsType(response.Data.Data.Direction);
+ Assert.Equal(MessageDirectionEnum.Out, response.Data.Data.Direction);
+ Assert.IsType>(response.Data.Data.To);
+ Assert.IsType(response.Data.Data.Tag);
+ Assert.IsType(response.Data.Data.Priority);
+ Assert.Equal(PriorityEnum.High, response.Data.Data.Priority);
+ Assert.IsType(response.Data.Data.Expiration);
+ Assert.IsType>(response.Data.Data.ChannelList);
+ Assert.IsType(response.Data.Data.ChannelList[0].ActualInstance);
+ var channelListObject = (MultiChannelChannelListRBMResponseObject)response.Data.Data.ChannelList[0].ActualInstance;
+ Assert.Equal(bwNumber, channelListObject.From);
+ Assert.Equal(messagingApplicationId, channelListObject.ApplicationId);
+ Assert.Equal(MultiChannelMessageChannelEnum.RBM, channelListObject.Channel);
+ Assert.Equal(bwNumber, channelListObject.Owner);
+ Assert.IsType(channelListObject.Content.ActualInstance);
+ var rbmContent = (RbmMessageMedia)channelListObject.Content.ActualInstance;
+ Assert.IsType>(rbmContent.Media);
+ Assert.IsType(rbmContent.Media[0]);
+ Assert.IsType(rbmContent.Media[0].FileUrl);
+ Assert.IsType(rbmContent.Media[0].ThumbnailUrl);
+ Assert.IsType>(rbmContent.Suggestions);
+ Assert.IsType(rbmContent.Suggestions[0]);
+ Assert.IsType(rbmContent.Suggestions[0].ActualInstance);
+ var rbmActionDial = (RbmActionDial)rbmContent.Suggestions[0].ActualInstance;
+ Assert.Equal(RbmActionTypeEnum.DIALPHONE, rbmActionDial.Type);
+ Assert.IsType(rbmActionDial.Text);
+ Assert.IsType(rbmActionDial.PostbackData);
+ Assert.IsType(rbmActionDial.PhoneNumber);
+ }
+
+ ///
+ /// Test CreateMultiChannelRBMRichStandaloneMessageTest
+ ///
+ [Fact]
+ public void CreateMultiChannelRBMRichStandaloneMessageTest()
+ {
+ MultiChannelChannelListRequestObject channelListRBMObject = new MultiChannelChannelListRequestObject(
+ new MultiChannelChannelListRBMObject(
+ from: bwNumber,
+ applicationId: messagingApplicationId,
+ channel: MultiChannelMessageChannelEnum.RBM,
+ content: new MultiChannelChannelListRBMObjectAllOfContent(
+ new RbmMessageContentRichCard(
+ new RbmStandaloneCard(
+ orientation: StandaloneCardOrientationEnum.VERTICAL,
+ thumbnailImageAlignment: ThumbnailAlignmentEnum.LEFT,
+ cardContent: new RbmCardContent(
+ title: "TestTitle",
+ description: "TestDescription",
+ media: new RbmCardContentMedia(
+ fileUrl: "https://test.url/",
+ thumbnailUrl: "https://test.url/",
+ height: RbmMediaHeightEnum.MEDIUM
+ ),
+ suggestions: new List {
+ new MultiChannelAction(new RbmActionDial(
+ type: RbmActionTypeEnum.DIALPHONE,
+ text: "Call Us",
+ postbackData: new byte[] {1, 2, 3},
+ phoneNumber: bwNumber
+ ))
+ }
+ )
+ )
+ )
+ )
+ )
+ );
+
+ MultiChannelMessageRequest multiChannelMessageRequest = new MultiChannelMessageRequest(
+ to: Environment.GetEnvironmentVariable("USER_NUMBER"),
+ tag: "tag",
+ priority: PriorityEnum.High,
+ expiration: DateTime.UtcNow.AddMinutes(1),
+ channelList: new List { channelListRBMObject }
+ );
+
+ var response = instance.CreateMultiChannelMessageWithHttpInfo(accountId, multiChannelMessageRequest);
+ Assert.IsType>(response);
+ Assert.Equal(HttpStatusCode.Accepted, response.StatusCode);
+ Assert.NotNull(response.Data);
+ Assert.IsType(response.Data);
+ Assert.IsType>(response.Data.Links);
+ Assert.IsType(response.Data.Data);
+ Assert.IsType(response.Data.Data.Id);
+ Assert.IsType(response.Data.Data.Time);
+ Assert.IsType(response.Data.Data.Direction);
+ Assert.Equal(MessageDirectionEnum.Out, response.Data.Data.Direction);
+ Assert.IsType>(response.Data.Data.To);
+ Assert.IsType(response.Data.Data.Tag);
+ Assert.IsType(response.Data.Data.Priority);
+ Assert.Equal(PriorityEnum.High, response.Data.Data.Priority);
+ Assert.IsType(response.Data.Data.Expiration);
+ Assert.IsType>(response.Data.Data.ChannelList);
+ Assert.IsType(response.Data.Data.ChannelList[0].ActualInstance);
+ var channelListObject = (MultiChannelChannelListRBMResponseObject)response.Data.Data.ChannelList[0].ActualInstance;
+ Assert.Equal(bwNumber, channelListObject.From);
+ Assert.Equal(messagingApplicationId, channelListObject.ApplicationId);
+ Assert.Equal(MultiChannelMessageChannelEnum.RBM, channelListObject.Channel);
+ Assert.Equal(bwNumber, channelListObject.Owner);
+ Assert.IsType(channelListObject.Content.ActualInstance);
+ var rbmContentRichCard = (RbmMessageContentRichCard)channelListObject.Content.ActualInstance;
+ Assert.IsType(rbmContentRichCard.ActualInstance);
+ var rbmContent = (RbmStandaloneCard)rbmContentRichCard.ActualInstance;
+ Assert.Equal(StandaloneCardOrientationEnum.VERTICAL, rbmContent.Orientation);
+ Assert.Equal(ThumbnailAlignmentEnum.LEFT, rbmContent.ThumbnailImageAlignment);
+ Assert.IsType(rbmContent.CardContent);
+ var cardContent = rbmContent.CardContent;
+ Assert.IsType(cardContent.Title);
+ Assert.IsType(cardContent.Description);
+ Assert.IsType(cardContent.Media);
+ var cardMedia = cardContent.Media;
+ Assert.IsType(cardMedia.FileUrl);
+ Assert.IsType(cardMedia.ThumbnailUrl);
+ Assert.Equal(RbmMediaHeightEnum.MEDIUM, cardMedia.Height);
+ Assert.IsType>(cardContent.Suggestions);
+ Assert.IsType(cardContent.Suggestions[0]);
+ Assert.IsType(cardContent.Suggestions[0].ActualInstance);
+ var rbmActionDial = (RbmActionDial)cardContent.Suggestions[0].ActualInstance;
+ Assert.Equal(RbmActionTypeEnum.DIALPHONE, rbmActionDial.Type);
+ Assert.IsType(rbmActionDial.Text);
+ Assert.IsType(rbmActionDial.PostbackData);
+ Assert.IsType(rbmActionDial.PhoneNumber);
+ }
+
+ ///
+ /// Test CreateMultiChannelRBMRichCarouselMessageTest
+ ///
+ [Fact]
+ public void CreateMultiChannelRBMRichCarouselMessageTest()
+ {
+ MultiChannelChannelListRequestObject channelListRBMObject = new MultiChannelChannelListRequestObject(
+ new MultiChannelChannelListRBMObject(
+ from: bwNumber,
+ applicationId: messagingApplicationId,
+ channel: MultiChannelMessageChannelEnum.RBM,
+ content: new MultiChannelChannelListRBMObjectAllOfContent(
+ new RbmMessageContentRichCard(
+ new RbmMessageCarouselCard(
+ cardWidth: CardWidthEnum.MEDIUM,
+ cardContents: new List {
+ new RbmCardContent(
+ title: "TestTitle",
+ description: "TestDescription",
+ media: new RbmCardContentMedia(
+ fileUrl: "https://test.url/",
+ thumbnailUrl: "https://test.url/",
+ height: RbmMediaHeightEnum.MEDIUM
+ ),
+ suggestions: new List {
+ new MultiChannelAction(new RbmActionDial(
+ type: RbmActionTypeEnum.DIALPHONE,
+ text: "Call Us",
+ postbackData: new byte[] {1, 2, 3},
+ phoneNumber: bwNumber
+ ))
+ }
+ ),
+ new RbmCardContent(
+ title: "TestTitle2"
+ )
+ }
+ )
+ )
+ )
+ )
+ );
+
+ MultiChannelMessageRequest multiChannelMessageRequest = new MultiChannelMessageRequest(
+ to: Environment.GetEnvironmentVariable("USER_NUMBER"),
+ tag: "tag",
+ priority: PriorityEnum.High,
+ expiration: DateTime.UtcNow.AddMinutes(1),
+ channelList: new List { channelListRBMObject }
+ );
+
+ var response = instance.CreateMultiChannelMessageWithHttpInfo(accountId, multiChannelMessageRequest);
+ Assert.IsType>(response);
+ Assert.Equal(HttpStatusCode.Accepted, response.StatusCode);
+ Assert.NotNull(response.Data);
+ Assert.IsType(response.Data);
+ Assert.IsType>(response.Data.Links);
+ Assert.IsType(response.Data.Data);
+ Assert.IsType(response.Data.Data.Id);
+ Assert.IsType(response.Data.Data.Time);
+ Assert.IsType(response.Data.Data.Direction);
+ Assert.Equal(MessageDirectionEnum.Out, response.Data.Data.Direction);
+ Assert.IsType>(response.Data.Data.To);
+ Assert.IsType(response.Data.Data.Tag);
+ Assert.IsType(response.Data.Data.Priority);
+ Assert.Equal(PriorityEnum.High, response.Data.Data.Priority);
+ Assert.IsType(response.Data.Data.Expiration);
+ Assert.IsType>(response.Data.Data.ChannelList);
+ Assert.IsType(response.Data.Data.ChannelList[0].ActualInstance);
+ var channelListObject = (MultiChannelChannelListRBMResponseObject)response.Data.Data.ChannelList[0].ActualInstance;
+ Assert.Equal(bwNumber, channelListObject.From);
+ Assert.Equal(messagingApplicationId, channelListObject.ApplicationId);
+ Assert.Equal(MultiChannelMessageChannelEnum.RBM, channelListObject.Channel);
+ Assert.Equal(bwNumber, channelListObject.Owner);
+ Assert.IsType(channelListObject.Content.ActualInstance);
+ var rbmContentRichCard = (RbmMessageContentRichCard)channelListObject.Content.ActualInstance;
+ Assert.IsType(rbmContentRichCard.ActualInstance);
+ var rbmContent = (RbmMessageCarouselCard)rbmContentRichCard.ActualInstance;
+ Assert.Equal(CardWidthEnum.MEDIUM, rbmContent.CardWidth);
+ Assert.IsType>(rbmContent.CardContents);
+ Assert.IsType(rbmContent.CardContents[0]);
+ Assert.IsType(rbmContent.CardContents[0].Title);
+ Assert.IsType(rbmContent.CardContents[0].Description);
+ Assert.IsType(rbmContent.CardContents[0].Media);
+ var cardMedia = rbmContent.CardContents[0].Media;
+ Assert.IsType(cardMedia.FileUrl);
+ Assert.IsType(cardMedia.ThumbnailUrl);
+ Assert.Equal(RbmMediaHeightEnum.MEDIUM, cardMedia.Height);
+ Assert.IsType>(rbmContent.CardContents[0].Suggestions);
+ Assert.IsType(rbmContent.CardContents[0].Suggestions[0]);
+ Assert.IsType(rbmContent.CardContents[0].Suggestions[0].ActualInstance);
+ var rbmActionDial = (RbmActionDial)rbmContent.CardContents[0].Suggestions[0].ActualInstance;
+ Assert.Equal(RbmActionTypeEnum.DIALPHONE, rbmActionDial.Type);
+ Assert.IsType(rbmActionDial.Text);
+ Assert.IsType(rbmActionDial.PostbackData);
+ Assert.IsType(rbmActionDial.PhoneNumber);
+ Assert.IsType(rbmContent.CardContents[1]);
+ Assert.IsType(rbmContent.CardContents[1].Title);
}
}
}
diff --git a/src/Bandwidth.Standard.Test/Unit/Model/BlockedWebhookTests.cs b/src/Bandwidth.Standard.Test/Unit/Model/BlockedWebhookTests.cs
index b9efe969..3e7eb4da 100644
--- a/src/Bandwidth.Standard.Test/Unit/Model/BlockedWebhookTests.cs
+++ b/src/Bandwidth.Standard.Test/Unit/Model/BlockedWebhookTests.cs
@@ -32,7 +32,6 @@ namespace Bandwidth.Standard.Test.Unit.Model
public class BlockedWebhookTests : IDisposable
{
private BlockedWebhook instance;
- private Guid guid = Guid.NewGuid();
public BlockedWebhookTests()
{
@@ -40,7 +39,7 @@ public BlockedWebhookTests()
accountId: "accountId",
phoneNumber: "phoneNumber",
status: TfvCallbackStatusEnum.VERIFIED,
- internalTicketNumber: guid,
+ internalTicketNumber: "internalTicketNumber",
blocked: true,
blockedReason: "blockedReason"
);
@@ -96,8 +95,8 @@ public void StatusTest()
[Fact]
public void InternalTicketNumberTest()
{
- Assert.IsType(instance.InternalTicketNumber);
- Assert.Equal(guid, instance.InternalTicketNumber);
+ Assert.IsType(instance.InternalTicketNumber);
+ Assert.Equal("internalTicketNumber", instance.InternalTicketNumber);
}
///
diff --git a/src/Bandwidth.Standard.Test/Unit/Model/FailureWebhookTests.cs b/src/Bandwidth.Standard.Test/Unit/Model/FailureWebhookTests.cs
index 460116a6..eebc63fb 100644
--- a/src/Bandwidth.Standard.Test/Unit/Model/FailureWebhookTests.cs
+++ b/src/Bandwidth.Standard.Test/Unit/Model/FailureWebhookTests.cs
@@ -28,7 +28,6 @@ namespace Bandwidth.Standard.Test.Unit.Model
public class FailureWebhookTests : IDisposable
{
private FailureWebhook instance;
- private Guid guid = Guid.NewGuid();
public FailureWebhookTests()
{
@@ -38,7 +37,7 @@ public FailureWebhookTests()
errorCode: "errorCode",
errorMessage: "errorMessage",
errors: new List { "error" },
- internalTicketNumber: guid
+ internalTicketNumber: "internalTicketNumber"
);
}
@@ -112,8 +111,8 @@ public void ErrorsTest()
[Fact]
public void InternalTicketNumberTest()
{
- Assert.IsType(instance.InternalTicketNumber);
- Assert.Equal(guid, instance.InternalTicketNumber);
+ Assert.IsType(instance.InternalTicketNumber);
+ Assert.Equal("internalTicketNumber", instance.InternalTicketNumber);
}
}
}
diff --git a/src/Bandwidth.Standard.Test/Unit/Model/MultiChannelChannelListRBMObjectAllOfContentTests.cs b/src/Bandwidth.Standard.Test/Unit/Model/MultiChannelChannelListRBMObjectAllOfContentTests.cs
index f7de1ee8..c6ccee34 100644
--- a/src/Bandwidth.Standard.Test/Unit/Model/MultiChannelChannelListRBMObjectAllOfContentTests.cs
+++ b/src/Bandwidth.Standard.Test/Unit/Model/MultiChannelChannelListRBMObjectAllOfContentTests.cs
@@ -34,7 +34,7 @@ public class MultiChannelChannelListRBMObjectAllOfContentTests : IDisposable
private MultiChannelChannelListRBMObjectAllOfContent instanceText;
private MultiChannelChannelListRBMObjectAllOfContent instanceMedia;
private MultiChannelChannelListRBMObjectAllOfContent instanceRich;
- private RbmCardContent cardContent;
+ private RbmCardContent cardContent;
private List suggestions;
public MultiChannelChannelListRBMObjectAllOfContentTests()
@@ -58,10 +58,12 @@ public MultiChannelChannelListRBMObjectAllOfContentTests()
));
instanceMedia = new MultiChannelChannelListRBMObjectAllOfContent(new RbmMessageMedia(
- media: new RbmMessageContentFile(
- fileUrl: "https://test.url/",
- thumbnailUrl: "https://test.url/"
- ),
+ media: new List {
+ new RbmMessageContentFile(
+ fileUrl: "https://test.url/",
+ thumbnailUrl: "https://test.url/"
+ )
+ },
suggestions: suggestions
));
diff --git a/src/Bandwidth.Standard.Test/Unit/Model/RbmMessageMediaTests.cs b/src/Bandwidth.Standard.Test/Unit/Model/RbmMessageMediaTests.cs
index b38bc9b2..c19f614f 100644
--- a/src/Bandwidth.Standard.Test/Unit/Model/RbmMessageMediaTests.cs
+++ b/src/Bandwidth.Standard.Test/Unit/Model/RbmMessageMediaTests.cs
@@ -36,10 +36,13 @@ public class RbmMessageMediaTests : IDisposable
public RbmMessageMediaTests()
{
instance = new RbmMessageMedia(
- media: new RbmMessageContentFile(
- fileUrl: "https://test.url/",
- thumbnailUrl: "https://test.url/"
- ),
+ media: new List
+ {
+ new RbmMessageContentFile(
+ fileUrl: "https://test.url/",
+ thumbnailUrl: "https://test.url/"
+ )
+ },
suggestions: new List
{
new MultiChannelAction(new RbmActionBase(
@@ -71,7 +74,7 @@ public void RbmMessageMediaInstanceTest()
[Fact]
public void MediaTest()
{
- Assert.IsType(instance.Media);
+ Assert.IsType>(instance.Media);
}
///
diff --git a/src/Bandwidth.Standard.Test/Unit/Model/TfvStatusTests.cs b/src/Bandwidth.Standard.Test/Unit/Model/TfvStatusTests.cs
index fd669d89..b4196623 100644
--- a/src/Bandwidth.Standard.Test/Unit/Model/TfvStatusTests.cs
+++ b/src/Bandwidth.Standard.Test/Unit/Model/TfvStatusTests.cs
@@ -28,7 +28,6 @@ namespace Bandwidth.Standard.Test.Unit.Model
public class TfvStatusTests : IDisposable
{
private TfvStatus instance;
- private Guid internalTicketNumber = Guid.NewGuid();
private TfvSubmissionInfo submission = new TfvSubmissionInfo();
public TfvStatusTests()
@@ -36,7 +35,7 @@ public TfvStatusTests()
instance = new TfvStatus(
phoneNumber: "phoneNumber",
status: TfvStatusEnum.PENDING,
- internalTicketNumber: internalTicketNumber,
+ internalTicketNumber: "internalTicketNumber",
declineReasonDescription: "declineReasonDescription",
resubmitAllowed: true,
createdDateTime: DateTime.Parse("2023-10-01T00:00:00Z"),
@@ -88,8 +87,8 @@ public void StatusTest()
[Fact]
public void InternalTicketNumberTest()
{
- Assert.IsType(instance.InternalTicketNumber);
- Assert.Equal(internalTicketNumber, instance.InternalTicketNumber);
+ Assert.IsType(instance.InternalTicketNumber);
+ Assert.Equal("internalTicketNumber", instance.InternalTicketNumber);
}
///
diff --git a/src/Bandwidth.Standard.Test/Unit/Model/VerificationDenialWebhookTests.cs b/src/Bandwidth.Standard.Test/Unit/Model/VerificationDenialWebhookTests.cs
index afe33167..7d1fbfcf 100644
--- a/src/Bandwidth.Standard.Test/Unit/Model/VerificationDenialWebhookTests.cs
+++ b/src/Bandwidth.Standard.Test/Unit/Model/VerificationDenialWebhookTests.cs
@@ -29,7 +29,6 @@ public class VerificationDenialWebhookTests : IDisposable
{
private VerificationDenialWebhook instance;
private AdditionalDenialReason additionalDenialReason;
- private Guid internalTicketNumber = Guid.NewGuid();
public VerificationDenialWebhookTests()
{
@@ -44,7 +43,7 @@ public VerificationDenialWebhookTests()
additionalDenialReasons: new List { additionalDenialReason },
declineReasonDescription: "declineReasonDescription",
denialStatusCode: 511,
- internalTicketNumber: internalTicketNumber,
+ internalTicketNumber: "internalTicketNumber",
phoneNumber: "+18005551234",
resubmitAllowed: true,
status: "status",
@@ -113,8 +112,8 @@ public void DenialStatusCodeTest()
[Fact]
public void InternalTicketNumberTest()
{
- Assert.IsType(instance.InternalTicketNumber);
- Assert.Equal(internalTicketNumber, instance.InternalTicketNumber);
+ Assert.IsType(instance.InternalTicketNumber);
+ Assert.Equal("internalTicketNumber", instance.InternalTicketNumber);
}
///
diff --git a/src/Bandwidth.Standard.Test/Unit/Model/VerificationWebhookTests.cs b/src/Bandwidth.Standard.Test/Unit/Model/VerificationWebhookTests.cs
index ae3cecf8..586997d4 100644
--- a/src/Bandwidth.Standard.Test/Unit/Model/VerificationWebhookTests.cs
+++ b/src/Bandwidth.Standard.Test/Unit/Model/VerificationWebhookTests.cs
@@ -28,7 +28,6 @@ namespace Bandwidth.Standard.Test.Unit.Model
public class VerificationWebhookTests : IDisposable
{
private VerificationWebhook instance;
- private Guid internalTicketNumber = Guid.NewGuid();
public VerificationWebhookTests()
{
@@ -36,7 +35,7 @@ public VerificationWebhookTests()
accountId: "accountId",
phoneNumber: "+1919551234",
status: TfvCallbackStatusEnum.VERIFIED,
- internalTicketNumber: internalTicketNumber
+ internalTicketNumber: "internalTicketNumber"
);
}
@@ -90,8 +89,8 @@ public void StatusTest()
[Fact]
public void InternalTicketNumberTest()
{
- Assert.IsType(instance.InternalTicketNumber);
- Assert.Equal(internalTicketNumber, instance.InternalTicketNumber);
+ Assert.IsType(instance.InternalTicketNumber);
+ Assert.Equal("internalTicketNumber", instance.InternalTicketNumber);
}
}
}
diff --git a/src/Bandwidth.Standard/Api/MessagesApi.cs b/src/Bandwidth.Standard/Api/MessagesApi.cs
index 7b11fb04..4d3a8e17 100644
--- a/src/Bandwidth.Standard/Api/MessagesApi.cs
+++ b/src/Bandwidth.Standard/Api/MessagesApi.cs
@@ -57,7 +57,7 @@ public interface IMessagesApiSync : IApiAccessor
/// List Messages
///
///
- /// Returns a list of messages based on query parameters.
+ /// Returns a list of messages based on query parameters. **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header.
///
/// Thrown when fails to make API call
/// Your Bandwidth Account ID.
@@ -96,7 +96,7 @@ public interface IMessagesApiSync : IApiAccessor
/// List Messages
///
///
- /// Returns a list of messages based on query parameters.
+ /// Returns a list of messages based on query parameters. **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header.
///
/// Thrown when fails to make API call
/// Your Bandwidth Account ID.
@@ -170,7 +170,7 @@ public interface IMessagesApiAsync : IApiAccessor
/// List Messages
///
///
- /// Returns a list of messages based on query parameters.
+ /// Returns a list of messages based on query parameters. **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header.
///
/// Thrown when fails to make API call
/// Your Bandwidth Account ID.
@@ -210,7 +210,7 @@ public interface IMessagesApiAsync : IApiAccessor
/// List Messages
///
///
- /// Returns a list of messages based on query parameters.
+ /// Returns a list of messages based on query parameters. **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header.
///
/// Thrown when fails to make API call
/// Your Bandwidth Account ID.
@@ -574,7 +574,7 @@ public Bandwidth.Standard.Client.ApiResponse CreateMessageWithHttpInfo(
}
///
- /// List Messages Returns a list of messages based on query parameters.
+ /// List Messages Returns a list of messages based on query parameters. **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header.
///
/// Thrown when fails to make API call
/// Your Bandwidth Account ID.
@@ -614,7 +614,7 @@ public Bandwidth.Standard.Client.ApiResponse CreateMessageWithHttpInfo(
}
///
- /// List Messages Returns a list of messages based on query parameters.
+ /// List Messages Returns a list of messages based on query parameters. **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header.
///
/// Thrown when fails to make API call
/// Your Bandwidth Account ID.
@@ -828,7 +828,7 @@ public Bandwidth.Standard.Client.ApiResponse CreateMessageWithHttpInfo(
}
///
- /// List Messages Returns a list of messages based on query parameters.
+ /// List Messages Returns a list of messages based on query parameters. **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header.
///
/// Thrown when fails to make API call
/// Your Bandwidth Account ID.
@@ -869,7 +869,7 @@ public Bandwidth.Standard.Client.ApiResponse CreateMessageWithHttpInfo(
}
///
- /// List Messages Returns a list of messages based on query parameters.
+ /// List Messages Returns a list of messages based on query parameters. **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header.
///
/// Thrown when fails to make API call
/// Your Bandwidth Account ID.
diff --git a/src/Bandwidth.Standard/Model/BlockedWebhook.cs b/src/Bandwidth.Standard/Model/BlockedWebhook.cs
index 7e6b7d5a..e5eb0bcd 100644
--- a/src/Bandwidth.Standard/Model/BlockedWebhook.cs
+++ b/src/Bandwidth.Standard/Model/BlockedWebhook.cs
@@ -47,7 +47,7 @@ public partial class BlockedWebhook : IValidatableObject
/// Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number..
/// Whether a Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked..
/// The reason why the Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked..
- public BlockedWebhook(string accountId = default(string), string phoneNumber = default(string), TfvCallbackStatusEnum? status = default(TfvCallbackStatusEnum?), Guid internalTicketNumber = default(Guid), bool blocked = default(bool), string blockedReason = default(string))
+ public BlockedWebhook(string accountId = default(string), string phoneNumber = default(string), TfvCallbackStatusEnum? status = default(TfvCallbackStatusEnum?), string internalTicketNumber = default(string), bool blocked = default(bool), string blockedReason = default(string))
{
this.AccountId = accountId;
this.PhoneNumber = phoneNumber;
@@ -79,7 +79,7 @@ public partial class BlockedWebhook : IValidatableObject
/// Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number.
/// acde070d-8c4c-4f0d-9d8a-162843c10333
[DataMember(Name = "internalTicketNumber", EmitDefaultValue = false)]
- public Guid InternalTicketNumber { get; set; }
+ public string InternalTicketNumber { get; set; }
///
/// Whether a Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked.
diff --git a/src/Bandwidth.Standard/Model/FailureWebhook.cs b/src/Bandwidth.Standard/Model/FailureWebhook.cs
index 68ec307e..feb427df 100644
--- a/src/Bandwidth.Standard/Model/FailureWebhook.cs
+++ b/src/Bandwidth.Standard/Model/FailureWebhook.cs
@@ -41,7 +41,7 @@ public partial class FailureWebhook : IValidatableObject
/// A description of the error that was encountered..
/// Details of the errors that were encountered when processing the request..
/// Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number..
- public FailureWebhook(string accountId = default(string), string phoneNumber = default(string), string errorCode = default(string), string errorMessage = default(string), List errors = default(List), Guid internalTicketNumber = default(Guid))
+ public FailureWebhook(string accountId = default(string), string phoneNumber = default(string), string errorCode = default(string), string errorMessage = default(string), List errors = default(List), string internalTicketNumber = default(string))
{
this.AccountId = accountId;
this.PhoneNumber = phoneNumber;
@@ -96,7 +96,7 @@ public partial class FailureWebhook : IValidatableObject
/// Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number.
/// acde070d-8c4c-4f0d-9d8a-162843c10333
[DataMember(Name = "internalTicketNumber", EmitDefaultValue = false)]
- public Guid InternalTicketNumber { get; set; }
+ public string InternalTicketNumber { get; set; }
///
/// Returns the string presentation of the object
diff --git a/src/Bandwidth.Standard/Model/LookupResult.cs b/src/Bandwidth.Standard/Model/LookupResult.cs
index 549bafe1..e566406b 100644
--- a/src/Bandwidth.Standard/Model/LookupResult.cs
+++ b/src/Bandwidth.Standard/Model/LookupResult.cs
@@ -130,7 +130,7 @@ public partial class LookupResult : IValidatableObject
/// [DNI-Only](#section/DNI-Only). The date the phone number entered the status described in `latestMessageDeliveryStatus`. Think of this as the \"start time\" for that status. Value resets every time the `latestMessageDeliveryStatus` changes.
///
/// [DNI-Only](#section/DNI-Only). The date the phone number entered the status described in `latestMessageDeliveryStatus`. Think of this as the \"start time\" for that status. Value resets every time the `latestMessageDeliveryStatus` changes.
- /// Fri Jun 20 00:00:00 UTC 2025
+ /// Thu Jun 19 20:00:00 EDT 2025
[DataMember(Name = "initialMessageDeliveryStatusDate", EmitDefaultValue = false)]
[JsonConverter(typeof(OpenAPIDateConverter))]
public DateTime InitialMessageDeliveryStatusDate { get; set; }
@@ -139,7 +139,7 @@ public partial class LookupResult : IValidatableObject
/// [DNI-Only](#section/DNI-Only). The date bandwidth last received delivery status information for this phone number. Use this field to understand how up-to-date the `latestMessageDeliveryStatus` is. Value resets every time the `latestMessageDeliveryStatus` changes.
///
/// [DNI-Only](#section/DNI-Only). The date bandwidth last received delivery status information for this phone number. Use this field to understand how up-to-date the `latestMessageDeliveryStatus` is. Value resets every time the `latestMessageDeliveryStatus` changes.
- /// Sat Jun 21 00:00:00 UTC 2025
+ /// Fri Jun 20 20:00:00 EDT 2025
[DataMember(Name = "latestMessageDeliveryStatusDate", EmitDefaultValue = false)]
[JsonConverter(typeof(OpenAPIDateConverter))]
public DateTime LatestMessageDeliveryStatusDate { get; set; }
diff --git a/src/Bandwidth.Standard/Model/RbmActionBase.cs b/src/Bandwidth.Standard/Model/RbmActionBase.cs
index 33ebaecb..fb2d1d16 100644
--- a/src/Bandwidth.Standard/Model/RbmActionBase.cs
+++ b/src/Bandwidth.Standard/Model/RbmActionBase.cs
@@ -78,7 +78,7 @@ protected RbmActionBase() { }
/// Base64 payload the customer receives when the reply is clicked.
///
/// Base64 payload the customer receives when the reply is clicked.
- /// [B@43f7f48d
+ /// [B@126d0868
[DataMember(Name = "postbackData", IsRequired = true, EmitDefaultValue = true)]
public byte[] PostbackData { get; set; }
diff --git a/src/Bandwidth.Standard/Model/RbmMessageMedia.cs b/src/Bandwidth.Standard/Model/RbmMessageMedia.cs
index 96a89251..0967a508 100644
--- a/src/Bandwidth.Standard/Model/RbmMessageMedia.cs
+++ b/src/Bandwidth.Standard/Model/RbmMessageMedia.cs
@@ -42,7 +42,7 @@ protected RbmMessageMedia() { }
///
/// media (required).
/// An array of suggested actions for the recipient..
- public RbmMessageMedia(RbmMessageContentFile media = default(RbmMessageContentFile), List suggestions = default(List))
+ public RbmMessageMedia(List media = default(List), List suggestions = default(List))
{
// to ensure "media" is required (not null)
if (media == null)
@@ -57,7 +57,7 @@ protected RbmMessageMedia() { }
/// Gets or Sets Media
///
[DataMember(Name = "media", IsRequired = true, EmitDefaultValue = true)]
- public RbmMessageContentFile Media { get; set; }
+ public List Media { get; set; }
///
/// An array of suggested actions for the recipient.
diff --git a/src/Bandwidth.Standard/Model/RbmSuggestionResponse.cs b/src/Bandwidth.Standard/Model/RbmSuggestionResponse.cs
index a0976c1c..2ef0e516 100644
--- a/src/Bandwidth.Standard/Model/RbmSuggestionResponse.cs
+++ b/src/Bandwidth.Standard/Model/RbmSuggestionResponse.cs
@@ -55,7 +55,7 @@ public partial class RbmSuggestionResponse : IValidatableObject
/// Base64 payload the customer receives when the reply is clicked.
///
/// Base64 payload the customer receives when the reply is clicked.
- /// [B@43f7f48d
+ /// [B@126d0868
[DataMember(Name = "postbackData", EmitDefaultValue = false)]
public byte[] PostbackData { get; set; }
diff --git a/src/Bandwidth.Standard/Model/TfvStatus.cs b/src/Bandwidth.Standard/Model/TfvStatus.cs
index 45d9e62f..76e29c98 100644
--- a/src/Bandwidth.Standard/Model/TfvStatus.cs
+++ b/src/Bandwidth.Standard/Model/TfvStatus.cs
@@ -52,7 +52,7 @@ public partial class TfvStatus : IValidatableObject
/// Whether a Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked..
/// The reason why the Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked..
/// The token provided by Campaign Verify to validate your political use case. Only required for 527 political organizations. If you are not a 527 political organization, this field should be omitted. If you pass an empty string, it will be passed along and potentially rejected..
- public TfvStatus(string phoneNumber = default(string), TfvStatusEnum? status = default(TfvStatusEnum?), Guid internalTicketNumber = default(Guid), string declineReasonDescription = default(string), bool resubmitAllowed = default(bool), DateTime createdDateTime = default(DateTime), DateTime modifiedDateTime = default(DateTime), TfvSubmissionInfo submission = default(TfvSubmissionInfo), bool blocked = default(bool), string blockedReason = default(string), string cvToken = default(string))
+ public TfvStatus(string phoneNumber = default(string), TfvStatusEnum? status = default(TfvStatusEnum?), string internalTicketNumber = default(string), string declineReasonDescription = default(string), bool resubmitAllowed = default(bool), DateTime createdDateTime = default(DateTime), DateTime modifiedDateTime = default(DateTime), TfvSubmissionInfo submission = default(TfvSubmissionInfo), bool blocked = default(bool), string blockedReason = default(string), string cvToken = default(string))
{
this.PhoneNumber = phoneNumber;
this.Status = status;
@@ -81,7 +81,7 @@ public partial class TfvStatus : IValidatableObject
/// Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number - included in all webhook payloads.
/// acde070d-8c4c-4f0d-9d8a-162843c10333
[DataMember(Name = "internalTicketNumber", EmitDefaultValue = false)]
- public Guid InternalTicketNumber { get; set; }
+ public string InternalTicketNumber { get; set; }
///
/// Explanation for why a verification request was declined.
diff --git a/src/Bandwidth.Standard/Model/VerificationDenialWebhook.cs b/src/Bandwidth.Standard/Model/VerificationDenialWebhook.cs
index 8ae7ba17..46b7066a 100644
--- a/src/Bandwidth.Standard/Model/VerificationDenialWebhook.cs
+++ b/src/Bandwidth.Standard/Model/VerificationDenialWebhook.cs
@@ -45,7 +45,7 @@ public partial class VerificationDenialWebhook : IValidatableObject
/// status (default to "UNVERIFIED").
/// Whether a Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked..
/// The reason why the Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked..
- public VerificationDenialWebhook(string accountId = default(string), List additionalDenialReasons = default(List), string declineReasonDescription = default(string), int denialStatusCode = default(int), Guid internalTicketNumber = default(Guid), string phoneNumber = default(string), bool resubmitAllowed = default(bool), string status = @"UNVERIFIED", bool blocked = default(bool), string blockedReason = default(string))
+ public VerificationDenialWebhook(string accountId = default(string), List additionalDenialReasons = default(List), string declineReasonDescription = default(string), int denialStatusCode = default(int), string internalTicketNumber = default(string), string phoneNumber = default(string), bool resubmitAllowed = default(bool), string status = @"UNVERIFIED", bool blocked = default(bool), string blockedReason = default(string))
{
this.AccountId = accountId;
this.AdditionalDenialReasons = additionalDenialReasons;
@@ -98,7 +98,7 @@ public partial class VerificationDenialWebhook : IValidatableObject
/// Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number.
/// acde070d-8c4c-4f0d-9d8a-162843c10333
[DataMember(Name = "internalTicketNumber", EmitDefaultValue = false)]
- public Guid InternalTicketNumber { get; set; }
+ public string InternalTicketNumber { get; set; }
///
/// Toll-free telephone number in E.164 format.
diff --git a/src/Bandwidth.Standard/Model/VerificationWebhook.cs b/src/Bandwidth.Standard/Model/VerificationWebhook.cs
index 6318cfab..11d76cb1 100644
--- a/src/Bandwidth.Standard/Model/VerificationWebhook.cs
+++ b/src/Bandwidth.Standard/Model/VerificationWebhook.cs
@@ -45,7 +45,7 @@ public partial class VerificationWebhook : IValidatableObject
/// Toll-free telephone number in E.164 format..
/// status.
/// Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number..
- public VerificationWebhook(string accountId = default(string), string phoneNumber = default(string), TfvCallbackStatusEnum? status = default(TfvCallbackStatusEnum?), Guid internalTicketNumber = default(Guid))
+ public VerificationWebhook(string accountId = default(string), string phoneNumber = default(string), TfvCallbackStatusEnum? status = default(TfvCallbackStatusEnum?), string internalTicketNumber = default(string))
{
this.AccountId = accountId;
this.PhoneNumber = phoneNumber;
@@ -75,7 +75,7 @@ public partial class VerificationWebhook : IValidatableObject
/// Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number.
/// acde070d-8c4c-4f0d-9d8a-162843c10333
[DataMember(Name = "internalTicketNumber", EmitDefaultValue = false)]
- public Guid InternalTicketNumber { get; set; }
+ public string InternalTicketNumber { get; set; }
///
/// Returns the string presentation of the object