From d1cf6ace750e402a8be9a51a25779728f10f10d8 Mon Sep 17 00:00:00 2001 From: Jessica Matsuoka Date: Tue, 10 Mar 2026 13:38:36 +0100 Subject: [PATCH] DEVEXP-1303: OAS-Synchro - Conversation --- .../conversation/api/v1/messages_apis.py | 22 ++++++++-------- .../channel_specific_message_content.py | 4 +++ .../channelspecific/line/__init__.py | 23 ++++++++++++++++ .../channelspecific/line/buttons/__init__.py | 7 +++++ ...ne_notification_message_template_button.py | 12 +++++++++ ...line_notification_message_template_body.py | 26 +++++++++++++++++++ ...cation_message_template_emphasized_item.py | 12 +++++++++ ...line_notification_message_template_item.py | 12 +++++++++ ...e_notification_message_template_message.py | 18 +++++++++++++ ...st_messages_by_channel_identity_request.py | 4 +-- .../internal/request/list_messages_request.py | 4 +-- .../internal/request/message_id_request.py | 4 +-- .../update_message_metadata_request.py | 4 +-- .../models/v1/messages/types/__init__.py | 4 +-- .../types/channel_specific_message_type.py | 1 + .../v1/messages/types/messages_source_type.py | 2 +- 16 files changed, 137 insertions(+), 22 deletions(-) create mode 100644 sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/__init__.py create mode 100644 sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/buttons/__init__.py create mode 100644 sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/buttons/line_notification_message_template_button.py create mode 100644 sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_body.py create mode 100644 sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_emphasized_item.py create mode 100644 sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_item.py create mode 100644 sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_message.py diff --git a/sinch/domains/conversation/api/v1/messages_apis.py b/sinch/domains/conversation/api/v1/messages_apis.py index 623b24dd..3c95b3b1 100644 --- a/sinch/domains/conversation/api/v1/messages_apis.py +++ b/sinch/domains/conversation/api/v1/messages_apis.py @@ -21,7 +21,7 @@ ConversationMessagesViewType, MessageContentType, MessageQueueType, - MessagesSourceType, + MessageSourceType, MetadataUpdateStrategyType, ProcessingStrategyType, CardMessageDict, @@ -82,7 +82,7 @@ class Messages(BaseConversation): def delete( self, message_id: str, - messages_source: Optional[MessagesSourceType] = None, + messages_source: Optional[MessageSourceType] = None, **kwargs, ) -> None: """ @@ -97,7 +97,7 @@ def delete( operations on messages in Dispatch Mode. Defaults to `CONVERSATION_SOURCE` when not specified. For more information, see [Processing Modes](https://developers.sinch.com/docs/conversation/processing-modes/). (optional) - :type messages_source: Optional[MessagesSource] + :type messages_source: Optional[MessageSourceType] :param **kwargs: Additional parameters for the request. :type **kwargs: dict @@ -114,7 +114,7 @@ def delete( def get( self, message_id: str, - messages_source: Optional[MessagesSourceType] = None, + messages_source: Optional[MessageSourceType] = None, **kwargs, ) -> ConversationMessageResponse: """ @@ -126,7 +126,7 @@ def get( operations on messages in Dispatch Mode. Defaults to `CONVERSATION_SOURCE` when not specified. For more information, see [Processing Modes](https://developers.sinch.com/docs/conversation/processing-modes/). (optional) - :type messages_source: Optional[MessagesSource] + :type messages_source: Optional[MessageSourceType] :param **kwargs: Additional parameters for the request. :type **kwargs: dict @@ -151,7 +151,7 @@ def list( start_time: Optional[datetime] = None, end_time: Optional[datetime] = None, view: Optional[ConversationMessagesViewType] = None, - messages_source: Optional[MessagesSourceType] = None, + messages_source: Optional[MessageSourceType] = None, only_recipient_originated: Optional[bool] = None, channel: Optional[ConversationChannelType] = None, direction: Optional[ConversationDirectionType] = None, @@ -180,7 +180,7 @@ def list( :param view: Messages view type. WITH_METADATA or WITHOUT_METADATA. :type view: Optional[ConversationMessagesViewType] :param messages_source: Specifies the message source for the request. - :type messages_source: Optional[MessagesSourceType] + :type messages_source: Optional[MessageSourceType] :param only_recipient_originated: Only fetch recipient-originated messages. :type only_recipient_originated: Optional[bool] :param channel: Only fetch messages from the specified channel. @@ -223,7 +223,7 @@ def list_last_messages_by_channel_identity( channel_identities: Optional[List[str]] = None, contact_ids: Optional[List[str]] = None, app_id: Optional[str] = None, - messages_source: Optional[MessagesSourceType] = None, + messages_source: Optional[MessageSourceType] = None, page_size: Optional[int] = None, page_token: Optional[str] = None, view: Optional[ConversationMessagesViewType] = None, @@ -246,7 +246,7 @@ def list_last_messages_by_channel_identity( :param app_id: Optional. Resource name (id) of the app. :type app_id: Optional[str] :param messages_source: Specifies the message source for the request. - :type messages_source: Optional[MessagesSourceType] + :type messages_source: Optional[MessageSourceType] :param page_size: Optional. Maximum number of messages to fetch. Defaults to 10, maximum is 1000. :type page_size: Optional[int] :param page_token: Optional. Next page token previously returned if any. @@ -295,7 +295,7 @@ def update( self, message_id: str, metadata: str, - messages_source: Optional[MessagesSourceType] = None, + messages_source: Optional[MessageSourceType] = None, **kwargs, ) -> ConversationMessageResponse: """ @@ -309,7 +309,7 @@ def update( operations on messages in Dispatch Mode. Defaults to `CONVERSATION_SOURCE` when not specified. For more information, see [Processing Modes](https://developers.sinch.com/docs/conversation/processing-modes/). (optional) - :type messages_source: Optional[MessagesSource] + :type messages_source: Optional[MessageSourceType] :param **kwargs: Additional parameters for the request. :type **kwargs: dict diff --git a/sinch/domains/conversation/models/v1/messages/categories/channelspecific/channel_specific_message_content.py b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/channel_specific_message_content.py index d7e5eac7..06aa2e1c 100644 --- a/sinch/domains/conversation/models/v1/messages/categories/channelspecific/channel_specific_message_content.py +++ b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/channel_specific_message_content.py @@ -6,6 +6,9 @@ from sinch.domains.conversation.models.v1.messages.categories.channelspecific.kakaotalk.commerce.kakaotalk_commerce_channel_specific_message import ( KakaoTalkCommerceChannelSpecificMessage, ) +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.line_notification_message_template_message import ( + LineNotificationMessageTemplateMessage, +) from sinch.domains.conversation.models.v1.messages.categories.channelspecific.whatsapp.flows.flow_channel_specific_message import ( FlowChannelSpecificMessage, ) @@ -22,4 +25,5 @@ PaymentOrderStatusChannelSpecificMessage, KakaoTalkCommerceChannelSpecificMessage, KakaoTalkCarouselCommerceChannelSpecificMessage, + LineNotificationMessageTemplateMessage, ] diff --git a/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/__init__.py b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/__init__.py new file mode 100644 index 00000000..ad72d09b --- /dev/null +++ b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/__init__.py @@ -0,0 +1,23 @@ +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.line_notification_message_template_emphasized_item import ( + LineNotificationMessageTemplateEmphasizedItem, +) +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.line_notification_message_template_item import ( + LineNotificationMessageTemplateItem, +) +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.buttons import ( + LineNotificationMessageTemplateButton, +) +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.line_notification_message_template_body import ( + LineNotificationMessageTemplateBody, +) +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.line_notification_message_template_message import ( + LineNotificationMessageTemplateMessage, +) + +__all__ = [ + "LineNotificationMessageTemplateEmphasizedItem", + "LineNotificationMessageTemplateItem", + "LineNotificationMessageTemplateButton", + "LineNotificationMessageTemplateBody", + "LineNotificationMessageTemplateMessage", +] diff --git a/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/buttons/__init__.py b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/buttons/__init__.py new file mode 100644 index 00000000..93ca8ffe --- /dev/null +++ b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/buttons/__init__.py @@ -0,0 +1,7 @@ +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.buttons.line_notification_message_template_button import ( + LineNotificationMessageTemplateButton, +) + +__all__ = [ + "LineNotificationMessageTemplateButton", +] diff --git a/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/buttons/line_notification_message_template_button.py b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/buttons/line_notification_message_template_button.py new file mode 100644 index 00000000..7ef0fd1b --- /dev/null +++ b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/buttons/line_notification_message_template_button.py @@ -0,0 +1,12 @@ +from pydantic import Field, StrictStr +from sinch.domains.conversation.models.v1.messages.internal.base import ( + BaseModelConfiguration, +) + + +class LineNotificationMessageTemplateButton(BaseModelConfiguration): + button_key: StrictStr = Field( + ..., + description="Button key. See LINE documentation for available keys.", + ) + url: StrictStr = Field(..., description="Button URL.") diff --git a/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_body.py b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_body.py new file mode 100644 index 00000000..d71a9bc6 --- /dev/null +++ b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_body.py @@ -0,0 +1,26 @@ +from typing import Optional +from pydantic import Field, conlist +from sinch.domains.conversation.models.v1.messages.internal.base import ( + BaseModelConfiguration, +) +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.line_notification_message_template_emphasized_item import ( + LineNotificationMessageTemplateEmphasizedItem, +) +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.line_notification_message_template_item import ( + LineNotificationMessageTemplateItem, +) +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.buttons import ( + LineNotificationMessageTemplateButton, +) + + +class LineNotificationMessageTemplateBody(BaseModelConfiguration): + emphasized_item: Optional[ + LineNotificationMessageTemplateEmphasizedItem + ] = Field(default=None, description="Template emphasized item.") + items: Optional[conlist(LineNotificationMessageTemplateItem)] = Field( + default=None, description="List of template items." + ) + buttons: Optional[conlist(LineNotificationMessageTemplateButton)] = Field( + default=None, description="List of template buttons." + ) diff --git a/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_emphasized_item.py b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_emphasized_item.py new file mode 100644 index 00000000..66adc2f3 --- /dev/null +++ b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_emphasized_item.py @@ -0,0 +1,12 @@ +from pydantic import Field, StrictStr +from sinch.domains.conversation.models.v1.messages.internal.base import ( + BaseModelConfiguration, +) + + +class LineNotificationMessageTemplateEmphasizedItem(BaseModelConfiguration): + item_key: StrictStr = Field( + ..., + description="Item key. See LINE documentation for available keys.", + ) + content: StrictStr = Field(..., description="Item value.") diff --git a/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_item.py b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_item.py new file mode 100644 index 00000000..a6a10e42 --- /dev/null +++ b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_item.py @@ -0,0 +1,12 @@ +from pydantic import Field, StrictStr +from sinch.domains.conversation.models.v1.messages.internal.base import ( + BaseModelConfiguration, +) + + +class LineNotificationMessageTemplateItem(BaseModelConfiguration): + item_key: StrictStr = Field( + ..., + description="Item key. See LINE documentation for available keys.", + ) + content: StrictStr = Field(..., description="Item value.") diff --git a/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_message.py b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_message.py new file mode 100644 index 00000000..4a02ed0a --- /dev/null +++ b/sinch/domains/conversation/models/v1/messages/categories/channelspecific/line/line_notification_message_template_message.py @@ -0,0 +1,18 @@ +from typing import Optional +from pydantic import Field, StrictStr +from sinch.domains.conversation.models.v1.messages.internal.base import ( + BaseModelConfiguration, +) +from sinch.domains.conversation.models.v1.messages.categories.channelspecific.line.line_notification_message_template_body import ( + LineNotificationMessageTemplateBody, +) + + +class LineNotificationMessageTemplateMessage(BaseModelConfiguration): + template_key: StrictStr = Field( + ..., + description="Template key. See LINE documentation for available keys.", + ) + body: Optional[LineNotificationMessageTemplateBody] = Field( + default=None, description="Template body." + ) diff --git a/sinch/domains/conversation/models/v1/messages/internal/request/list_messages_by_channel_identity_request.py b/sinch/domains/conversation/models/v1/messages/internal/request/list_messages_by_channel_identity_request.py index a3d1f13a..6ea3689c 100644 --- a/sinch/domains/conversation/models/v1/messages/internal/request/list_messages_by_channel_identity_request.py +++ b/sinch/domains/conversation/models/v1/messages/internal/request/list_messages_by_channel_identity_request.py @@ -8,7 +8,7 @@ ConversationChannelType, ConversationDirectionType, ConversationMessagesViewType, - MessagesSourceType, + MessageSourceType, ) @@ -25,7 +25,7 @@ class ListLastMessagesByChannelIdentityRequest(BaseModelConfiguration): default=None, description="Optional. Resource name (id) of the app.", ) - messages_source: Optional[MessagesSourceType] = Field( + messages_source: Optional[MessageSourceType] = Field( default=None, description="Specifies the message source for the request.", ) diff --git a/sinch/domains/conversation/models/v1/messages/internal/request/list_messages_request.py b/sinch/domains/conversation/models/v1/messages/internal/request/list_messages_request.py index 19ddafa2..a0c6398d 100644 --- a/sinch/domains/conversation/models/v1/messages/internal/request/list_messages_request.py +++ b/sinch/domains/conversation/models/v1/messages/internal/request/list_messages_request.py @@ -8,7 +8,7 @@ ConversationChannelType, ConversationDirectionType, ConversationMessagesViewType, - MessagesSourceType, + MessageSourceType, ) @@ -51,7 +51,7 @@ class ListMessagesRequest(BaseModelConfiguration): default=None, description="Messages view type. WITH_METADATA or WITHOUT_METADATA.", ) - messages_source: Optional[MessagesSourceType] = Field( + messages_source: Optional[MessageSourceType] = Field( default=None, description="Specifies the message source for the request.", ) diff --git a/sinch/domains/conversation/models/v1/messages/internal/request/message_id_request.py b/sinch/domains/conversation/models/v1/messages/internal/request/message_id_request.py index 7823c8c1..2e623643 100644 --- a/sinch/domains/conversation/models/v1/messages/internal/request/message_id_request.py +++ b/sinch/domains/conversation/models/v1/messages/internal/request/message_id_request.py @@ -1,7 +1,7 @@ from typing import Optional from pydantic import Field from sinch.domains.conversation.models.v1.messages.types import ( - MessagesSourceType, + MessageSourceType, ) from sinch.domains.conversation.models.v1.messages.internal.base import ( BaseModelConfiguration, @@ -10,7 +10,7 @@ class MessageIdRequest(BaseModelConfiguration): message_id: str = Field(..., description="The unique ID of the message.") - messages_source: Optional[MessagesSourceType] = Field( + messages_source: Optional[MessageSourceType] = Field( default=None, description="Specifies the message source for which the request will be processed. Used for operations on messages in Dispatch Mode. For more information, see [Processing Modes](https://developers.sinch.com/docs/conversation/processing-modes/).", ) diff --git a/sinch/domains/conversation/models/v1/messages/internal/request/update_message_metadata_request.py b/sinch/domains/conversation/models/v1/messages/internal/request/update_message_metadata_request.py index f454ff7e..93376ef0 100644 --- a/sinch/domains/conversation/models/v1/messages/internal/request/update_message_metadata_request.py +++ b/sinch/domains/conversation/models/v1/messages/internal/request/update_message_metadata_request.py @@ -1,7 +1,7 @@ from typing import Optional from pydantic import Field, StrictStr from sinch.domains.conversation.models.v1.messages.types import ( - MessagesSourceType, + MessageSourceType, ) from sinch.domains.conversation.models.v1.messages.internal.base import ( BaseModelConfiguration, @@ -13,7 +13,7 @@ class UpdateMessageMetadataRequest(BaseModelConfiguration): metadata: StrictStr = Field( ..., description="Metadata that should be associated with the message." ) - messages_source: Optional[MessagesSourceType] = Field( + messages_source: Optional[MessageSourceType] = Field( default=None, description="Specifies the message source for which the request will be processed. Used for operations on messages in Dispatch Mode.", ) diff --git a/sinch/domains/conversation/models/v1/messages/types/__init__.py b/sinch/domains/conversation/models/v1/messages/types/__init__.py index 5834cd05..facc18bf 100644 --- a/sinch/domains/conversation/models/v1/messages/types/__init__.py +++ b/sinch/domains/conversation/models/v1/messages/types/__init__.py @@ -20,7 +20,7 @@ CardHeightType, ) from sinch.domains.conversation.models.v1.messages.types.messages_source_type import ( - MessagesSourceType, + MessageSourceType, ) from sinch.domains.conversation.models.v1.messages.types.payment_order_goods_type import ( PaymentOrderGoodsType, @@ -106,7 +106,7 @@ "RecipientDict", "ChannelRecipientIdentityDict", "SendMessageRequestBodyDict", - "MessagesSourceType", + "MessageSourceType", "PaymentOrderGoodsType", "PaymentOrderStatusType", "PaymentOrderType", diff --git a/sinch/domains/conversation/models/v1/messages/types/channel_specific_message_type.py b/sinch/domains/conversation/models/v1/messages/types/channel_specific_message_type.py index 62824da8..b4c41a7c 100644 --- a/sinch/domains/conversation/models/v1/messages/types/channel_specific_message_type.py +++ b/sinch/domains/conversation/models/v1/messages/types/channel_specific_message_type.py @@ -9,6 +9,7 @@ "ORDER_STATUS", "COMMERCE", "CAROUSEL_COMMERCE", + "NOTIFICATION_MESSAGE_TEMPLATE", ], StrictStr, ] diff --git a/sinch/domains/conversation/models/v1/messages/types/messages_source_type.py b/sinch/domains/conversation/models/v1/messages/types/messages_source_type.py index 023c1cb9..5acd391c 100644 --- a/sinch/domains/conversation/models/v1/messages/types/messages_source_type.py +++ b/sinch/domains/conversation/models/v1/messages/types/messages_source_type.py @@ -2,6 +2,6 @@ from pydantic import StrictStr -MessagesSourceType = Union[ +MessageSourceType = Union[ Literal["CONVERSATION_SOURCE", "DISPATCH_SOURCE"], StrictStr ]