diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 50e7d8f3..f9b98b8e 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -106,6 +106,7 @@ bandwidth/models/links_object.py bandwidth/models/list_endpoints_response.py bandwidth/models/list_message_direction_enum.py bandwidth/models/list_message_item.py +bandwidth/models/location_response.py bandwidth/models/lookup_error_response.py bandwidth/models/lookup_error_schema.py bandwidth/models/lookup_error_schema_meta.py @@ -158,7 +159,6 @@ bandwidth/models/rbm_action_type_enum.py bandwidth/models/rbm_action_view_location.py bandwidth/models/rbm_card_content.py bandwidth/models/rbm_card_content_media.py -bandwidth/models/rbm_location_response.py bandwidth/models/rbm_media_height_enum.py bandwidth/models/rbm_message_carousel_card.py bandwidth/models/rbm_message_content_file.py @@ -167,7 +167,6 @@ bandwidth/models/rbm_message_content_text.py bandwidth/models/rbm_message_media.py bandwidth/models/rbm_open_url_enum.py bandwidth/models/rbm_standalone_card.py -bandwidth/models/rbm_suggestion_response.py bandwidth/models/rbm_web_view_enum.py bandwidth/models/recording_available_callback.py bandwidth/models/recording_complete_callback.py @@ -184,6 +183,7 @@ bandwidth/models/status_callback.py bandwidth/models/status_callback_message.py bandwidth/models/status_callback_type_enum.py bandwidth/models/stir_shaken.py +bandwidth/models/suggestion_response.py bandwidth/models/sync_lookup_request.py bandwidth/models/telephone_number.py bandwidth/models/tfv_basic_authentication.py @@ -309,6 +309,7 @@ docs/LinksObject.md docs/ListEndpointsResponse.md docs/ListMessageDirectionEnum.md docs/ListMessageItem.md +docs/LocationResponse.md docs/LookupErrorResponse.md docs/LookupErrorSchema.md docs/LookupErrorSchemaMeta.md @@ -366,7 +367,6 @@ docs/RbmActionTypeEnum.md docs/RbmActionViewLocation.md docs/RbmCardContent.md docs/RbmCardContentMedia.md -docs/RbmLocationResponse.md docs/RbmMediaHeightEnum.md docs/RbmMessageCarouselCard.md docs/RbmMessageContentFile.md @@ -375,7 +375,6 @@ docs/RbmMessageContentText.md docs/RbmMessageMedia.md docs/RbmOpenUrlEnum.md docs/RbmStandaloneCard.md -docs/RbmSuggestionResponse.md docs/RbmWebViewEnum.md docs/RecordingAvailableCallback.md docs/RecordingCompleteCallback.md @@ -394,6 +393,7 @@ docs/StatusCallback.md docs/StatusCallbackMessage.md docs/StatusCallbackTypeEnum.md docs/StirShaken.md +docs/SuggestionResponse.md docs/SyncLookupRequest.md docs/TelephoneNumber.md docs/TfvBasicAuthentication.md diff --git a/README.md b/README.md index b965734b..8ee40a89 100644 --- a/README.md +++ b/README.md @@ -248,6 +248,7 @@ Class | Method | HTTP request | Description - [ListEndpointsResponse](docs/ListEndpointsResponse.md) - [ListMessageDirectionEnum](docs/ListMessageDirectionEnum.md) - [ListMessageItem](docs/ListMessageItem.md) + - [LocationResponse](docs/LocationResponse.md) - [LookupErrorResponse](docs/LookupErrorResponse.md) - [LookupErrorSchema](docs/LookupErrorSchema.md) - [LookupErrorSchemaMeta](docs/LookupErrorSchemaMeta.md) @@ -300,7 +301,6 @@ Class | Method | HTTP request | Description - [RbmActionViewLocation](docs/RbmActionViewLocation.md) - [RbmCardContent](docs/RbmCardContent.md) - [RbmCardContentMedia](docs/RbmCardContentMedia.md) - - [RbmLocationResponse](docs/RbmLocationResponse.md) - [RbmMediaHeightEnum](docs/RbmMediaHeightEnum.md) - [RbmMessageCarouselCard](docs/RbmMessageCarouselCard.md) - [RbmMessageContentFile](docs/RbmMessageContentFile.md) @@ -309,7 +309,6 @@ Class | Method | HTTP request | Description - [RbmMessageMedia](docs/RbmMessageMedia.md) - [RbmOpenUrlEnum](docs/RbmOpenUrlEnum.md) - [RbmStandaloneCard](docs/RbmStandaloneCard.md) - - [RbmSuggestionResponse](docs/RbmSuggestionResponse.md) - [RbmWebViewEnum](docs/RbmWebViewEnum.md) - [RecordingAvailableCallback](docs/RecordingAvailableCallback.md) - [RecordingCompleteCallback](docs/RecordingCompleteCallback.md) @@ -326,6 +325,7 @@ Class | Method | HTTP request | Description - [StatusCallbackMessage](docs/StatusCallbackMessage.md) - [StatusCallbackTypeEnum](docs/StatusCallbackTypeEnum.md) - [StirShaken](docs/StirShaken.md) + - [SuggestionResponse](docs/SuggestionResponse.md) - [SyncLookupRequest](docs/SyncLookupRequest.md) - [TelephoneNumber](docs/TelephoneNumber.md) - [TfvBasicAuthentication](docs/TfvBasicAuthentication.md) diff --git a/bandwidth.yml b/bandwidth.yml index 5e2bc9b3..92f7b763 100644 --- a/bandwidth.yml +++ b/bandwidth.yml @@ -2880,7 +2880,7 @@ components: type: string media: $ref: '#/components/schemas/rbmMessageContentFile' - rbmSuggestionResponse: + suggestionResponse: type: object properties: text: @@ -2889,7 +2889,12 @@ components: example: Yes, I would like to proceed postbackData: $ref: '#/components/schemas/rbmActionPostbackData' - rbmLocationResponse: + pairedMessageId: + type: string + nullable: true + description: Corresponding parent message ID (MT). + example: 1752697342534u24xerqdukke523x + locationResponse: type: object properties: latitude: @@ -2925,7 +2930,7 @@ components: message-failed: '#/components/schemas/statusCallback' message-read: '#/components/schemas/statusCallback' message-received: '#/components/schemas/inboundCallback' - request-location-response: '#/components/schemas/inboundCallback' + requested-location-response: '#/components/schemas/inboundCallback' suggestion-response: '#/components/schemas/inboundCallback' statusCallback: type: object @@ -3035,14 +3040,15 @@ components: - `message-received` indicates an MO message from a Bandwidth user's client to a Bandwidth number. - - `request-location-response` indicates a response to a location request - sent by the Bandwidth user's client after receiving an RBM message. + - `requested-location-response` indicates a response to a location + request sent by the Bandwidth user's client after receiving an RBM + message. - `suggestion-response` indicates a response to a suggestion sent by the Bandwidth user's client after receiving an RBM message. enum: - message-received - - request-location-response + - requested-location-response - suggestion-response example: message-received statusCallbackMessage: @@ -3118,9 +3124,9 @@ components: content: $ref: '#/components/schemas/multiChannelMessageContent' suggestionResponse: - $ref: '#/components/schemas/rbmSuggestionResponse' + $ref: '#/components/schemas/suggestionResponse' locationResponse: - $ref: '#/components/schemas/rbmLocationResponse' + $ref: '#/components/schemas/locationResponse' required: - id - owner @@ -9154,7 +9160,7 @@ components: tag: '{"myTag": "myTagValue"}' updateEndpointBxmlRequestExample: summary: Update Endpoint BXML Request Example - value: + value: endpointDisconnectedEventExample: summary: Endpoint Disconnected Event value: @@ -9678,10 +9684,10 @@ components:

The payload type will be one of message-received, suggestion-response, or - location-request-response. + requested-location-response.

Note that suggestion-response and - location-request-response callback types are + requested-location-response callback types are pertinent only for RBM messages sent from the /messages/multiChannel endpoint. diff --git a/bandwidth/__init__.py b/bandwidth/__init__.py index 13602e40..eef41ad5 100644 --- a/bandwidth/__init__.py +++ b/bandwidth/__init__.py @@ -126,6 +126,7 @@ "ListEndpointsResponse", "ListMessageDirectionEnum", "ListMessageItem", + "LocationResponse", "LookupErrorResponse", "LookupErrorSchema", "LookupErrorSchemaMeta", @@ -178,7 +179,6 @@ "RbmActionViewLocation", "RbmCardContent", "RbmCardContentMedia", - "RbmLocationResponse", "RbmMediaHeightEnum", "RbmMessageCarouselCard", "RbmMessageContentFile", @@ -187,7 +187,6 @@ "RbmMessageMedia", "RbmOpenUrlEnum", "RbmStandaloneCard", - "RbmSuggestionResponse", "RbmWebViewEnum", "RecordingAvailableCallback", "RecordingCompleteCallback", @@ -204,6 +203,7 @@ "StatusCallbackMessage", "StatusCallbackTypeEnum", "StirShaken", + "SuggestionResponse", "SyncLookupRequest", "TelephoneNumber", "TfvBasicAuthentication", @@ -352,6 +352,7 @@ from bandwidth.models.list_endpoints_response import ListEndpointsResponse as ListEndpointsResponse from bandwidth.models.list_message_direction_enum import ListMessageDirectionEnum as ListMessageDirectionEnum from bandwidth.models.list_message_item import ListMessageItem as ListMessageItem +from bandwidth.models.location_response import LocationResponse as LocationResponse from bandwidth.models.lookup_error_response import LookupErrorResponse as LookupErrorResponse from bandwidth.models.lookup_error_schema import LookupErrorSchema as LookupErrorSchema from bandwidth.models.lookup_error_schema_meta import LookupErrorSchemaMeta as LookupErrorSchemaMeta @@ -404,7 +405,6 @@ from bandwidth.models.rbm_action_view_location import RbmActionViewLocation as RbmActionViewLocation from bandwidth.models.rbm_card_content import RbmCardContent as RbmCardContent from bandwidth.models.rbm_card_content_media import RbmCardContentMedia as RbmCardContentMedia -from bandwidth.models.rbm_location_response import RbmLocationResponse as RbmLocationResponse from bandwidth.models.rbm_media_height_enum import RbmMediaHeightEnum as RbmMediaHeightEnum from bandwidth.models.rbm_message_carousel_card import RbmMessageCarouselCard as RbmMessageCarouselCard from bandwidth.models.rbm_message_content_file import RbmMessageContentFile as RbmMessageContentFile @@ -413,7 +413,6 @@ from bandwidth.models.rbm_message_media import RbmMessageMedia as RbmMessageMedia from bandwidth.models.rbm_open_url_enum import RbmOpenUrlEnum as RbmOpenUrlEnum from bandwidth.models.rbm_standalone_card import RbmStandaloneCard as RbmStandaloneCard -from bandwidth.models.rbm_suggestion_response import RbmSuggestionResponse as RbmSuggestionResponse from bandwidth.models.rbm_web_view_enum import RbmWebViewEnum as RbmWebViewEnum from bandwidth.models.recording_available_callback import RecordingAvailableCallback as RecordingAvailableCallback from bandwidth.models.recording_complete_callback import RecordingCompleteCallback as RecordingCompleteCallback @@ -430,6 +429,7 @@ from bandwidth.models.status_callback_message import StatusCallbackMessage as StatusCallbackMessage from bandwidth.models.status_callback_type_enum import StatusCallbackTypeEnum as StatusCallbackTypeEnum from bandwidth.models.stir_shaken import StirShaken as StirShaken +from bandwidth.models.suggestion_response import SuggestionResponse as SuggestionResponse from bandwidth.models.sync_lookup_request import SyncLookupRequest as SyncLookupRequest from bandwidth.models.telephone_number import TelephoneNumber as TelephoneNumber from bandwidth.models.tfv_basic_authentication import TfvBasicAuthentication as TfvBasicAuthentication diff --git a/bandwidth/models/__init__.py b/bandwidth/models/__init__.py index 9e15825d..9d1722dd 100644 --- a/bandwidth/models/__init__.py +++ b/bandwidth/models/__init__.py @@ -100,6 +100,7 @@ from bandwidth.models.list_endpoints_response import ListEndpointsResponse from bandwidth.models.list_message_direction_enum import ListMessageDirectionEnum from bandwidth.models.list_message_item import ListMessageItem +from bandwidth.models.location_response import LocationResponse from bandwidth.models.lookup_error_response import LookupErrorResponse from bandwidth.models.lookup_error_schema import LookupErrorSchema from bandwidth.models.lookup_error_schema_meta import LookupErrorSchemaMeta @@ -152,7 +153,6 @@ from bandwidth.models.rbm_action_view_location import RbmActionViewLocation from bandwidth.models.rbm_card_content import RbmCardContent from bandwidth.models.rbm_card_content_media import RbmCardContentMedia -from bandwidth.models.rbm_location_response import RbmLocationResponse from bandwidth.models.rbm_media_height_enum import RbmMediaHeightEnum from bandwidth.models.rbm_message_carousel_card import RbmMessageCarouselCard from bandwidth.models.rbm_message_content_file import RbmMessageContentFile @@ -161,7 +161,6 @@ from bandwidth.models.rbm_message_media import RbmMessageMedia from bandwidth.models.rbm_open_url_enum import RbmOpenUrlEnum from bandwidth.models.rbm_standalone_card import RbmStandaloneCard -from bandwidth.models.rbm_suggestion_response import RbmSuggestionResponse from bandwidth.models.rbm_web_view_enum import RbmWebViewEnum from bandwidth.models.recording_available_callback import RecordingAvailableCallback from bandwidth.models.recording_complete_callback import RecordingCompleteCallback @@ -178,6 +177,7 @@ from bandwidth.models.status_callback_message import StatusCallbackMessage from bandwidth.models.status_callback_type_enum import StatusCallbackTypeEnum from bandwidth.models.stir_shaken import StirShaken +from bandwidth.models.suggestion_response import SuggestionResponse from bandwidth.models.sync_lookup_request import SyncLookupRequest from bandwidth.models.telephone_number import TelephoneNumber from bandwidth.models.tfv_basic_authentication import TfvBasicAuthentication diff --git a/bandwidth/models/callback.py b/bandwidth/models/callback.py index 4fc0e9ec..1e5fc32a 100644 --- a/bandwidth/models/callback.py +++ b/bandwidth/models/callback.py @@ -53,7 +53,7 @@ class Callback(BaseModel): 'message-received': 'InboundCallback', 'message-sending': 'StatusCallback', 'message-sent': 'StatusCallback', - 'request-location-response': 'InboundCallback', + 'requested-location-response': 'InboundCallback', 'suggestion-response': 'InboundCallback' } diff --git a/bandwidth/models/inbound_callback_message.py b/bandwidth/models/inbound_callback_message.py index b42bcbc9..9c8ceb51 100644 --- a/bandwidth/models/inbound_callback_message.py +++ b/bandwidth/models/inbound_callback_message.py @@ -21,12 +21,12 @@ from datetime import datetime from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from bandwidth.models.location_response import LocationResponse from bandwidth.models.message_direction_enum import MessageDirectionEnum from bandwidth.models.multi_channel_message_channel_enum import MultiChannelMessageChannelEnum from bandwidth.models.multi_channel_message_content import MultiChannelMessageContent from bandwidth.models.priority_enum import PriorityEnum -from bandwidth.models.rbm_location_response import RbmLocationResponse -from bandwidth.models.rbm_suggestion_response import RbmSuggestionResponse +from bandwidth.models.suggestion_response import SuggestionResponse from typing import Optional, Set from typing_extensions import Self @@ -48,8 +48,8 @@ class InboundCallbackMessage(BaseModel): priority: Optional[PriorityEnum] = None channel: Optional[MultiChannelMessageChannelEnum] = None content: Optional[MultiChannelMessageContent] = None - suggestion_response: Optional[RbmSuggestionResponse] = Field(default=None, alias="suggestionResponse") - location_response: Optional[RbmLocationResponse] = Field(default=None, alias="locationResponse") + suggestion_response: Optional[SuggestionResponse] = Field(default=None, alias="suggestionResponse") + location_response: Optional[LocationResponse] = Field(default=None, alias="locationResponse") additional_properties: Dict[str, Any] = {} __properties: ClassVar[List[str]] = ["id", "owner", "applicationId", "time", "segmentCount", "direction", "to", "from", "text", "tag", "media", "priority", "channel", "content", "suggestionResponse", "locationResponse"] @@ -134,8 +134,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "priority": obj.get("priority"), "channel": obj.get("channel"), "content": MultiChannelMessageContent.from_dict(obj["content"]) if obj.get("content") is not None else None, - "suggestionResponse": RbmSuggestionResponse.from_dict(obj["suggestionResponse"]) if obj.get("suggestionResponse") is not None else None, - "locationResponse": RbmLocationResponse.from_dict(obj["locationResponse"]) if obj.get("locationResponse") is not None else None + "suggestionResponse": SuggestionResponse.from_dict(obj["suggestionResponse"]) if obj.get("suggestionResponse") is not None else None, + "locationResponse": LocationResponse.from_dict(obj["locationResponse"]) if obj.get("locationResponse") is not None else None }) # store additional fields in additional_properties for _key in obj.keys(): diff --git a/bandwidth/models/inbound_callback_type_enum.py b/bandwidth/models/inbound_callback_type_enum.py index 69527df3..b2527e05 100644 --- a/bandwidth/models/inbound_callback_type_enum.py +++ b/bandwidth/models/inbound_callback_type_enum.py @@ -21,14 +21,14 @@ class InboundCallbackTypeEnum(str, Enum): """ - The possible inbound callback types originating from MO messages or multichannel message client responses: - `message-received` indicates an MO message from a Bandwidth user's client to a Bandwidth number. - `request-location-response` indicates a response to a location request sent by the Bandwidth user's client after receiving an RBM message. - `suggestion-response` indicates a response to a suggestion sent by the Bandwidth user's client after receiving an RBM message. + The possible inbound callback types originating from MO messages or multichannel message client responses: - `message-received` indicates an MO message from a Bandwidth user's client to a Bandwidth number. - `requested-location-response` indicates a response to a location request sent by the Bandwidth user's client after receiving an RBM message. - `suggestion-response` indicates a response to a suggestion sent by the Bandwidth user's client after receiving an RBM message. """ """ allowed enum values """ MESSAGE_MINUS_RECEIVED = 'message-received' - REQUEST_MINUS_LOCATION_MINUS_RESPONSE = 'request-location-response' + REQUESTED_MINUS_LOCATION_MINUS_RESPONSE = 'requested-location-response' SUGGESTION_MINUS_RESPONSE = 'suggestion-response' @classmethod diff --git a/bandwidth/models/location_response.py b/bandwidth/models/location_response.py new file mode 100644 index 00000000..8d50ca19 --- /dev/null +++ b/bandwidth/models/location_response.py @@ -0,0 +1,103 @@ +# coding: utf-8 + +""" + Bandwidth + + Bandwidth's Communication APIs + + The version of the OpenAPI document: 1.0.0 + Contact: letstalk@bandwidth.com + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class LocationResponse(BaseModel): + """ + LocationResponse + """ # noqa: E501 + latitude: Optional[StrictStr] = Field(default=None, description="The latitude of the client's location.") + longitude: Optional[StrictStr] = Field(default=None, description="The longitude of the client's location.") + additional_properties: Dict[str, Any] = {} + __properties: ClassVar[List[str]] = ["latitude", "longitude"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of LocationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + * Fields in `self.additional_properties` are added to the output dict. + """ + excluded_fields: Set[str] = set([ + "additional_properties", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # puts key-value pairs in additional_properties in the top level + if self.additional_properties is not None: + for _key, _value in self.additional_properties.items(): + _dict[_key] = _value + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of LocationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "latitude": obj.get("latitude"), + "longitude": obj.get("longitude") + }) + # store additional fields in additional_properties + for _key in obj.keys(): + if _key not in cls.__properties: + _obj.additional_properties[_key] = obj.get(_key) + + return _obj + + diff --git a/bandwidth/models/suggestion_response.py b/bandwidth/models/suggestion_response.py new file mode 100644 index 00000000..c52c454a --- /dev/null +++ b/bandwidth/models/suggestion_response.py @@ -0,0 +1,111 @@ +# coding: utf-8 + +""" + Bandwidth + + Bandwidth's Communication APIs + + The version of the OpenAPI document: 1.0.0 + Contact: letstalk@bandwidth.com + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional, Union +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + +class SuggestionResponse(BaseModel): + """ + SuggestionResponse + """ # noqa: E501 + text: Optional[StrictStr] = Field(default=None, description="The text associated with the suggestion response.") + postback_data: Optional[Union[Annotated[bytes, Field(strict=True, max_length=2048)], Annotated[str, Field(strict=True, max_length=2048)]]] = Field(default=None, description="Base64 payload the customer receives when the reply is clicked.", alias="postbackData") + paired_message_id: Optional[StrictStr] = Field(default=None, description="Corresponding parent message ID (MT).", alias="pairedMessageId") + additional_properties: Dict[str, Any] = {} + __properties: ClassVar[List[str]] = ["text", "postbackData", "pairedMessageId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of SuggestionResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + * Fields in `self.additional_properties` are added to the output dict. + """ + excluded_fields: Set[str] = set([ + "additional_properties", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # puts key-value pairs in additional_properties in the top level + if self.additional_properties is not None: + for _key, _value in self.additional_properties.items(): + _dict[_key] = _value + + # set to None if paired_message_id (nullable) is None + # and model_fields_set contains the field + if self.paired_message_id is None and "paired_message_id" in self.model_fields_set: + _dict['pairedMessageId'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of SuggestionResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "text": obj.get("text"), + "postbackData": obj.get("postbackData"), + "pairedMessageId": obj.get("pairedMessageId") + }) + # store additional fields in additional_properties + for _key in obj.keys(): + if _key not in cls.__properties: + _obj.additional_properties[_key] = obj.get(_key) + + return _obj + + diff --git a/docs/InboundCallbackMessage.md b/docs/InboundCallbackMessage.md index 5a46c208..762514d9 100644 --- a/docs/InboundCallbackMessage.md +++ b/docs/InboundCallbackMessage.md @@ -19,8 +19,8 @@ Name | Type | Description | Notes **priority** | [**PriorityEnum**](PriorityEnum.md) | | [optional] **channel** | [**MultiChannelMessageChannelEnum**](MultiChannelMessageChannelEnum.md) | | [optional] **content** | [**MultiChannelMessageContent**](MultiChannelMessageContent.md) | | [optional] -**suggestion_response** | [**RbmSuggestionResponse**](RbmSuggestionResponse.md) | | [optional] -**location_response** | [**RbmLocationResponse**](RbmLocationResponse.md) | | [optional] +**suggestion_response** | [**SuggestionResponse**](SuggestionResponse.md) | | [optional] +**location_response** | [**LocationResponse**](LocationResponse.md) | | [optional] ## Example diff --git a/docs/InboundCallbackTypeEnum.md b/docs/InboundCallbackTypeEnum.md index f1259de4..1475f5f4 100644 --- a/docs/InboundCallbackTypeEnum.md +++ b/docs/InboundCallbackTypeEnum.md @@ -1,12 +1,12 @@ # InboundCallbackTypeEnum -The possible inbound callback types originating from MO messages or multichannel message client responses: - `message-received` indicates an MO message from a Bandwidth user's client to a Bandwidth number. - `request-location-response` indicates a response to a location request sent by the Bandwidth user's client after receiving an RBM message. - `suggestion-response` indicates a response to a suggestion sent by the Bandwidth user's client after receiving an RBM message. +The possible inbound callback types originating from MO messages or multichannel message client responses: - `message-received` indicates an MO message from a Bandwidth user's client to a Bandwidth number. - `requested-location-response` indicates a response to a location request sent by the Bandwidth user's client after receiving an RBM message. - `suggestion-response` indicates a response to a suggestion sent by the Bandwidth user's client after receiving an RBM message. ## Enum * `MESSAGE_MINUS_RECEIVED` (value: `'message-received'`) -* `REQUEST_MINUS_LOCATION_MINUS_RESPONSE` (value: `'request-location-response'`) +* `REQUESTED_MINUS_LOCATION_MINUS_RESPONSE` (value: `'requested-location-response'`) * `SUGGESTION_MINUS_RESPONSE` (value: `'suggestion-response'`) diff --git a/docs/LocationResponse.md b/docs/LocationResponse.md new file mode 100644 index 00000000..c1e681a0 --- /dev/null +++ b/docs/LocationResponse.md @@ -0,0 +1,30 @@ +# LocationResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**latitude** | **float** | The latitude of the client's location. | [optional] +**longitude** | **float** | The longitude of the client's location. | [optional] + +## Example + +```python +from bandwidth.models.location_response import LocationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of LocationResponse from a JSON string +location_response_instance = LocationResponse.from_json(json) +# print the JSON string representation of the object +print(LocationResponse.to_json()) + +# convert the object into a dict +location_response_dict = location_response_instance.to_dict() +# create an instance of LocationResponse from a dict +location_response_from_dict = LocationResponse.from_dict(location_response_dict) +``` +[[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/SuggestionResponse.md b/docs/SuggestionResponse.md new file mode 100644 index 00000000..9847a07a --- /dev/null +++ b/docs/SuggestionResponse.md @@ -0,0 +1,31 @@ +# SuggestionResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**text** | **str** | The text associated with the suggestion response. | [optional] +**postback_data** | **bytearray** | Base64 payload the customer receives when the reply is clicked. | [optional] +**paired_message_id** | **str** | Corresponding parent message ID (MT). | [optional] + +## Example + +```python +from bandwidth.models.suggestion_response import SuggestionResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of SuggestionResponse from a JSON string +suggestion_response_instance = SuggestionResponse.from_json(json) +# print the JSON string representation of the object +print(SuggestionResponse.to_json()) + +# convert the object into a dict +suggestion_response_dict = suggestion_response_instance.to_dict() +# create an instance of SuggestionResponse from a dict +suggestion_response_from_dict = SuggestionResponse.from_dict(suggestion_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + +