sinch.domains.conversation.models.v1.messages.shared package

class sinch.domains.conversation.models.v1.messages.shared.AddressInfo(
*,
city: Annotated[str, Strict(strict=True)] | None = None,
country: Annotated[str, Strict(strict=True)] | None = None,
state: Annotated[str, Strict(strict=True)] | None = None,
zip: Annotated[str, Strict(strict=True)] | None = None,
type: Annotated[str, Strict(strict=True)] | None = None,
country_code: Annotated[str, Strict(strict=True)] | None = None,
**extra_data: Any,
)[source]

Bases: SnakeCaseExtrasModel

Parameters:
  • city (Annotated[str, Strict(strict=True)] | None)

  • country (Annotated[str, Strict(strict=True)] | None)

  • state (Annotated[str, Strict(strict=True)] | None)

  • zip (Annotated[str, Strict(strict=True)] | None)

  • type (Annotated[str, Strict(strict=True)] | None)

  • country_code (Annotated[str, Strict(strict=True)] | None)

  • extra_data (Any)

city: Annotated[str, Strict(strict=True)] | None
country: Annotated[str, Strict(strict=True)] | None
state: Annotated[str, Strict(strict=True)] | None
zip: Annotated[str, Strict(strict=True)] | None
type: Annotated[str, Strict(strict=True)] | None
country_code: Annotated[str, Strict(strict=True)] | None
model_config = {'extra': 'allow', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sinch.domains.conversation.models.v1.messages.shared.Agent(
*,
display_name: Annotated[str, Strict(strict=True)] | None = None,
type: Literal['UNKNOWN_AGENT_TYPE', 'HUMAN', 'BOT'] | Annotated[str, Strict(strict=True)] | None = None,
picture_url: Annotated[str, Strict(strict=True)] | None = None,
**extra_data: Any,
)[source]

Bases: SnakeCaseExtrasModel

Parameters:
  • display_name (Annotated[str, Strict(strict=True)] | None)

  • type (Literal['UNKNOWN_AGENT_TYPE', 'HUMAN', 'BOT'] | ~typing.Annotated[str, ~pydantic.types.Strict(strict=True)] | None)

  • picture_url (Annotated[str, Strict(strict=True)] | None)

  • extra_data (Any)

display_name: Annotated[str, Strict(strict=True)] | None
type: Literal['UNKNOWN_AGENT_TYPE', 'HUMAN', 'BOT'] | Annotated[str, Strict(strict=True)] | None
picture_url: Annotated[str, Strict(strict=True)] | None
model_config = {'extra': 'allow', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sinch.domains.conversation.models.v1.messages.shared.ChannelIdentity(
*,
app_id: Annotated[str, Strict(strict=True)] | None = None,
channel: Literal['WHATSAPP', 'RCS', 'SMS', 'MESSENGER', 'VIBERBM', 'MMS', 'INSTAGRAM', 'TELEGRAM', 'KAKAOTALK', 'KAKAOTALKCHAT', 'LINE', 'WECHAT', 'APPLEBC'] | Annotated[str, Strict(strict=True)],
identity: Annotated[str, Strict(strict=True)],
**extra_data: Any,
)[source]

Bases: SnakeCaseExtrasModel

Parameters:
  • app_id (Annotated[str, Strict(strict=True)] | None)

  • channel (Literal['WHATSAPP', 'RCS', 'SMS', 'MESSENGER', 'VIBERBM', 'MMS', 'INSTAGRAM', 'TELEGRAM', 'KAKAOTALK', 'KAKAOTALKCHAT', 'LINE', 'WECHAT', 'APPLEBC'] | ~typing.Annotated[str, ~pydantic.types.Strict(strict=True)])

  • identity (Annotated[str, Strict(strict=True)])

  • extra_data (Any)

app_id: Annotated[str, Strict(strict=True)] | None
channel: Literal['WHATSAPP', 'RCS', 'SMS', 'MESSENGER', 'VIBERBM', 'MMS', 'INSTAGRAM', 'TELEGRAM', 'KAKAOTALK', 'KAKAOTALKCHAT', 'LINE', 'WECHAT', 'APPLEBC'] | Annotated[str, Strict(strict=True)]
identity: Annotated[str, Strict(strict=True)]
model_config = {'extra': 'allow', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sinch.domains.conversation.models.v1.messages.shared.ChoiceItem(
*,
title: Annotated[str, Strict(strict=True)],
description: Annotated[str, Strict(strict=True)] | None = None,
media: MediaProperties | None = None,
postback_data: Annotated[str, Strict(strict=True)] | None = None,
**extra_data: Any,
)[source]

Bases: SnakeCaseExtrasModel

Parameters:
  • title (Annotated[str, Strict(strict=True)])

  • description (Annotated[str, Strict(strict=True)] | None)

  • media (MediaProperties | None)

  • postback_data (Annotated[str, Strict(strict=True)] | None)

  • extra_data (Any)

title: Annotated[str, Strict(strict=True)]
description: Annotated[str, Strict(strict=True)] | None
media: MediaProperties | None
postback_data: Annotated[str, Strict(strict=True)] | None
model_config = {'extra': 'allow', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sinch.domains.conversation.models.v1.messages.shared.ContactMessageCommonProps(
*,
reply_to: ReplyTo | None = None,
**extra_data: Any,
)[source]

Bases: SnakeCaseExtrasModel

Parameters:
  • reply_to (ReplyTo | None)

  • extra_data (Any)

reply_to: ReplyTo | None
model_config = {'extra': 'allow', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sinch.domains.conversation.models.v1.messages.shared.MessageCommonProps(
*,
accept_time: datetime | None = None,
channel_identity: ChannelIdentity | None = None,
contact_id: Annotated[str, Strict(strict=True)] | None = None,
conversation_id: Annotated[str, Strict(strict=True)] | None = None,
direction: Literal['TO_APP', 'TO_CONTACT'] | Annotated[str, Strict(strict=True)] | None = None,
id: Annotated[str, Strict(strict=True)] | None = None,
metadata: Annotated[str, Strict(strict=True)] | None = None,
injected: Annotated[bool, Strict(strict=True)] | None = None,
sender_id: Annotated[str, Strict(strict=True)] | None = None,
processing_mode: Literal['CONVERSATION', 'DISPATCH'] | Annotated[str, Strict(strict=True)] | None = None,
**extra_data: Any,
)[source]

Bases: SnakeCaseExtrasModel

Parameters:
  • accept_time (datetime | None)

  • channel_identity (ChannelIdentity | None)

  • contact_id (Annotated[str, Strict(strict=True)] | None)

  • conversation_id (Annotated[str, Strict(strict=True)] | None)

  • direction (Literal['TO_APP', 'TO_CONTACT'] | ~typing.Annotated[str, ~pydantic.types.Strict(strict=True)] | None)

  • id (Annotated[str, Strict(strict=True)] | None)

  • metadata (Annotated[str, Strict(strict=True)] | None)

  • injected (Annotated[bool, Strict(strict=True)] | None)

  • sender_id (Annotated[str, Strict(strict=True)] | None)

  • processing_mode (Literal['CONVERSATION', 'DISPATCH'] | ~typing.Annotated[str, ~pydantic.types.Strict(strict=True)] | None)

  • extra_data (Any)

accept_time: datetime | None
channel_identity: ChannelIdentity | None
contact_id: Annotated[str, Strict(strict=True)] | None
conversation_id: Annotated[str, Strict(strict=True)] | None
direction: Literal['TO_APP', 'TO_CONTACT'] | Annotated[str, Strict(strict=True)] | None
id: Annotated[str, Strict(strict=True)] | None
metadata: Annotated[str, Strict(strict=True)] | None
injected: Annotated[bool, Strict(strict=True)] | None
sender_id: Annotated[str, Strict(strict=True)] | None
processing_mode: Literal['CONVERSATION', 'DISPATCH'] | Annotated[str, Strict(strict=True)] | None
model_config = {'extra': 'allow', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sinch.domains.conversation.models.v1.messages.shared.Coordinates(
*,
latitude: Annotated[float, Strict(strict=True)] | Annotated[int, Strict(strict=True)],
longitude: Annotated[float, Strict(strict=True)] | Annotated[int, Strict(strict=True)],
**extra_data: Any,
)[source]

Bases: SnakeCaseExtrasModel

Parameters:
  • latitude (Annotated[float, Strict(strict=True)] | Annotated[int, Strict(strict=True)])

  • longitude (Annotated[float, Strict(strict=True)] | Annotated[int, Strict(strict=True)])

  • extra_data (Any)

latitude: Annotated[float, Strict(strict=True)] | Annotated[int, Strict(strict=True)]
longitude: Annotated[float, Strict(strict=True)] | Annotated[int, Strict(strict=True)]
model_config = {'extra': 'allow', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sinch.domains.conversation.models.v1.messages.shared.ProductItem(
*,
id: Annotated[str, Strict(strict=True)],
marketplace: Annotated[str, Strict(strict=True)],
quantity: Annotated[int, Strict(strict=True)] | None = None,
item_price: Annotated[float, Strict(strict=True)] | Annotated[int, Strict(strict=True)] | None = None,
currency: Annotated[str, Strict(strict=True)] | None = None,
**extra_data: Any,
)[source]

Bases: SnakeCaseExtrasModel

Parameters:
  • id (Annotated[str, Strict(strict=True)])

  • marketplace (Annotated[str, Strict(strict=True)])

  • quantity (Annotated[int, Strict(strict=True)] | None)

  • item_price (Annotated[float, Strict(strict=True)] | Annotated[int, Strict(strict=True)] | None)

  • currency (Annotated[str, Strict(strict=True)] | None)

  • extra_data (Any)

id: Annotated[str, Strict(strict=True)]
marketplace: Annotated[str, Strict(strict=True)]
quantity: Annotated[int, Strict(strict=True)] | None
item_price: Annotated[float, Strict(strict=True)] | Annotated[int, Strict(strict=True)] | None
currency: Annotated[str, Strict(strict=True)] | None
model_config = {'extra': 'allow', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class sinch.domains.conversation.models.v1.messages.shared.Reason(
*,
code: Literal['UNKNOWN', 'INTERNAL_ERROR', 'RATE_LIMITED', 'RECIPIENT_INVALID_CHANNEL_IDENTITY', 'RECIPIENT_NOT_REACHABLE', 'RECIPIENT_NOT_OPTED_IN', 'OUTSIDE_ALLOWED_SENDING_WINDOW', 'CHANNEL_FAILURE', 'CHANNEL_BAD_CONFIGURATION', 'CHANNEL_CONFIGURATION_MISSING', 'MEDIA_TYPE_UNSUPPORTED', 'MEDIA_TOO_LARGE', 'MEDIA_NOT_REACHABLE', 'NO_CHANNELS_LEFT', 'TEMPLATE_NOT_FOUND', 'TEMPLATE_INSUFFICIENT_PARAMETERS', 'TEMPLATE_NON_EXISTING_LANGUAGE_OR_VERSION', 'DELIVERY_TIMED_OUT', 'DELIVERY_REJECTED_DUE_TO_POLICY', 'CONTACT_NOT_FOUND', 'BAD_REQUEST', 'UNKNOWN_APP', 'NO_CHANNEL_IDENTITY_FOR_CONTACT', 'CHANNEL_REJECT', 'NO_PERMISSION', 'NO_PROFILE_AVAILABLE', 'UNSUPPORTED_OPERATION'] | Annotated[str, Strict(strict=True)] | None = None,
description: Annotated[str, Strict(strict=True)] | None = None,
sub_code: Literal['UNSPECIFIED_SUB_CODE', 'ATTACHMENT_REJECTED', 'MEDIA_TYPE_UNDETERMINED', 'INACTIVE_SENDER'] | Annotated[str, Strict(strict=True)] | None = None,
channel_code: Annotated[str, Strict(strict=True)] | None = None,
**extra_data: Any,
)[source]

Bases: SnakeCaseExtrasModel

Parameters:
  • code (Literal['UNKNOWN', 'INTERNAL_ERROR', 'RATE_LIMITED', 'RECIPIENT_INVALID_CHANNEL_IDENTITY', 'RECIPIENT_NOT_REACHABLE', 'RECIPIENT_NOT_OPTED_IN', 'OUTSIDE_ALLOWED_SENDING_WINDOW', 'CHANNEL_FAILURE', 'CHANNEL_BAD_CONFIGURATION', 'CHANNEL_CONFIGURATION_MISSING', 'MEDIA_TYPE_UNSUPPORTED', 'MEDIA_TOO_LARGE', 'MEDIA_NOT_REACHABLE', 'NO_CHANNELS_LEFT', 'TEMPLATE_NOT_FOUND', 'TEMPLATE_INSUFFICIENT_PARAMETERS', 'TEMPLATE_NON_EXISTING_LANGUAGE_OR_VERSION', 'DELIVERY_TIMED_OUT', 'DELIVERY_REJECTED_DUE_TO_POLICY', 'CONTACT_NOT_FOUND', 'BAD_REQUEST', 'UNKNOWN_APP', 'NO_CHANNEL_IDENTITY_FOR_CONTACT', 'CHANNEL_REJECT', 'NO_PERMISSION', 'NO_PROFILE_AVAILABLE', 'UNSUPPORTED_OPERATION'] | ~typing.Annotated[str, ~pydantic.types.Strict(strict=True)] | None)

  • description (Annotated[str, Strict(strict=True)] | None)

  • sub_code (Literal['UNSPECIFIED_SUB_CODE', 'ATTACHMENT_REJECTED', 'MEDIA_TYPE_UNDETERMINED', 'INACTIVE_SENDER'] | ~typing.Annotated[str, ~pydantic.types.Strict(strict=True)] | None)

  • channel_code (Annotated[str, Strict(strict=True)] | None)

  • extra_data (Any)

code: Literal['UNKNOWN', 'INTERNAL_ERROR', 'RATE_LIMITED', 'RECIPIENT_INVALID_CHANNEL_IDENTITY', 'RECIPIENT_NOT_REACHABLE', 'RECIPIENT_NOT_OPTED_IN', 'OUTSIDE_ALLOWED_SENDING_WINDOW', 'CHANNEL_FAILURE', 'CHANNEL_BAD_CONFIGURATION', 'CHANNEL_CONFIGURATION_MISSING', 'MEDIA_TYPE_UNSUPPORTED', 'MEDIA_TOO_LARGE', 'MEDIA_NOT_REACHABLE', 'NO_CHANNELS_LEFT', 'TEMPLATE_NOT_FOUND', 'TEMPLATE_INSUFFICIENT_PARAMETERS', 'TEMPLATE_NON_EXISTING_LANGUAGE_OR_VERSION', 'DELIVERY_TIMED_OUT', 'DELIVERY_REJECTED_DUE_TO_POLICY', 'CONTACT_NOT_FOUND', 'BAD_REQUEST', 'UNKNOWN_APP', 'NO_CHANNEL_IDENTITY_FOR_CONTACT', 'CHANNEL_REJECT', 'NO_PERMISSION', 'NO_PROFILE_AVAILABLE', 'UNSUPPORTED_OPERATION'] | Annotated[str, Strict(strict=True)] | None
description: Annotated[str, Strict(strict=True)] | None
sub_code: Literal['UNSPECIFIED_SUB_CODE', 'ATTACHMENT_REJECTED', 'MEDIA_TYPE_UNDETERMINED', 'INACTIVE_SENDER'] | Annotated[str, Strict(strict=True)] | None
channel_code: Annotated[str, Strict(strict=True)] | None
model_config = {'extra': 'allow', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].