Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions twilio/rest/api/v2010/account/conference/__init__.py

Large diffs are not rendered by default.

192 changes: 96 additions & 96 deletions twilio/rest/content/v1/content/__init__.py

Large diffs are not rendered by default.

18 changes: 10 additions & 8 deletions twilio/rest/conversations/v2/action.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,14 @@ class ConversationsV2Channel(object):

"""
:ivar id: Unique identifier for this Action.
:ivar type: The type of action. Accepted values: SEND_MESSAGE.
:ivar type: The type of action: action-send-message or action-start-flow.
:ivar status:
:ivar conversation_id: The conversation this action belongs to.
:ivar related: Named identifiers from downstream. For SEND_MESSAGE: - messageSid: The downstream message SID (present when PENDING or COMPLETED) - communicationId: The Communication ID (present when COMPLETED)
:ivar related: Named identifiers from downstream. For SEND_MESSAGE: - messageSid: The downstream message SID (present when PENDING or COMPLETED) - communicationId: The Communication ID (present when COMPLETED) For START_FLOW: - executionSid: The Studio Flow execution SID (present when COMPLETED)
:ivar created_at: Timestamp when the action was created.
:ivar updated_at: Timestamp when the action was last updated.
:ivar completed_at: Timestamp when the action reached a terminal status.
:ivar failure_reason: Human-readable failure reason. Null unless status is FAILED.
"""

def __init__(
Expand Down Expand Up @@ -75,6 +76,7 @@ def __init__(
self.completed_at: Optional[datetime] = deserialize.iso8601_datetime(
payload.get("completedAt")
)
self.failure_reason: Optional[str] = payload.get("failureReason")

# Only set _solution if path params are provided (not None)
if conversation_id is not None or action_id is not None:
Expand Down Expand Up @@ -331,8 +333,8 @@ def __init__(self, payload: Dict[str, Any]):

self._from: Optional[ActionList.ConversationsV2SendMessageParticipant] = (
ActionList.ConversationsV2SendMessageParticipant(payload.get("from"))
if payload.get("from") is not None
else None
if isinstance(payload.get("from"), dict)
else payload.get("from")
)
self.to: Optional[
List[ActionList.ConversationsV2SendMessageParticipant]
Expand All @@ -350,8 +352,8 @@ def __init__(self, payload: Dict[str, Any]):
)
self.content: Optional[ActionList.ConversationsV2SendMessageContent] = (
ActionList.ConversationsV2SendMessageContent(payload.get("content"))
if payload.get("content") is not None
else None
if isinstance(payload.get("content"), dict)
else payload.get("content")
)
self.channel_settings: Optional[Dict[str, Dict[str, object]]] = payload.get(
"channelSettings"
Expand All @@ -376,8 +378,8 @@ def __init__(self, payload: Dict[str, Any]):
self.type: Optional[str] = payload.get("type")
self.payload: Optional[ActionList.ConversationsV2SendMessagePayload] = (
ActionList.ConversationsV2SendMessagePayload(payload.get("payload"))
if payload.get("payload") is not None
else None
if isinstance(payload.get("payload"), dict)
else payload.get("payload")
)

def to_dict(self):
Expand Down
15 changes: 9 additions & 6 deletions twilio/rest/conversations/v2/communication.py
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,7 @@ class CreateCommunicationInConversationRequest(object):
:ivar author:
:ivar content:
:ivar channel_id:
:ivar resource_id: External resource identifier for this Communication (e.g. MessageSid for SMS/RCS/WhatsApp, TranscriptionSid + MessageIndex for Voice). If a Communication with the same resourceId already exists in the Conversation, it is updated instead of a new one being created.
:ivar recipients:
:ivar occurred_at: Timestamp when this Communication occurred. If omitted, the server uses the current time.
"""
Expand All @@ -401,19 +402,20 @@ def __init__(self, payload: Dict[str, Any]):
CommunicationList.CreateCommunicationInConversationRequestAuthor(
payload.get("author")
)
if payload.get("author") is not None
else None
if isinstance(payload.get("author"), dict)
else payload.get("author")
)
self.content: Optional[
CommunicationList.CreateCommunicationInConversationRequestContent
] = (
CommunicationList.CreateCommunicationInConversationRequestContent(
payload.get("content")
)
if payload.get("content") is not None
else None
if isinstance(payload.get("content"), dict)
else payload.get("content")
)
self.channel_id: Optional[str] = payload.get("channelId")
self.resource_id: Optional[str] = payload.get("resourceId")
self.recipients: Optional[
List[
CommunicationList.CreateCommunicationInConversationRequestRecipients
Expand All @@ -439,6 +441,7 @@ def to_dict(self):
"author": self.author.to_dict() if self.author is not None else None,
"content": self.content.to_dict() if self.content is not None else None,
"channelId": self.channel_id,
"resourceId": self.resource_id,
"recipients": (
[recipients.to_dict() for recipients in self.recipients]
if self.recipients is not None
Expand Down Expand Up @@ -484,8 +487,8 @@ def __init__(self, payload: Dict[str, Any]):
CommunicationList.ContentTranscriptionTranscription(
payload.get("transcription")
)
if payload.get("transcription") is not None
else None
if isinstance(payload.get("transcription"), dict)
else payload.get("transcription")
)

def to_dict(self):
Expand Down
44 changes: 26 additions & 18 deletions twilio/rest/conversations/v2/configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ class ConversationsV2ConversationGroupingType(object):
)

"""
:ivar status_url: URL to poll for operation status.
:ivar related: Named resource identifiers associated with this operation. Keys depend on the operation type: - config-create, config-update, config-delete: configurationId - conversation-delete: conversationId
:ivar id: Configuration ID.
:ivar display_name: A human-readable name for the configuration. Limited to 32 characters.
:ivar description: Human-readable description for the Configuration. Allows spaces and special characters, typically limited to a paragraph of text. This serves as a descriptive field rather than just a name.
Expand All @@ -45,20 +43,22 @@ class ConversationsV2ConversationGroupingType(object):
:ivar channel_settings: Channel-specific configuration settings by channel type. Keys should be valid channel types (`VOICE`, `SMS`, `RCS`, `WHATSAPP`, `CHAT`).
:ivar status_callbacks: List of default webhook configurations applied to Conversations under this Configuration.
:ivar intelligence_configuration_ids: A list of Conversational Intelligence configuration IDs.
:ivar trait_extraction_strategy_ids: A list of Trait Extraction Strategy IDs.
:ivar observation_extraction_strategy_ids: A list of Observation Extraction Strategy IDs.
:ivar memory_extraction_enabled: Whether memory extraction is enabled for conversations under this configuration. Defaults to false.
:ivar conversations_v1_bridge:
:ivar created_at: Timestamp when this Configuration was created.
:ivar updated_at: Timestamp when this Configuration was last updated.
:ivar version: Version number used for optimistic locking.
:ivar status_url: URL to poll for operation status.
:ivar related: Named resource identifiers associated with this operation. Keys depend on the operation type: - config-create, config-update, config-delete: configurationId - conversation-delete: conversationId
"""

def __init__(
self, version: Version, payload: Dict[str, Any], id: Optional[str] = None
):
super().__init__(version)

self.status_url: Optional[str] = payload.get("statusUrl")
self.related: Optional[Dict[str, str]] = payload.get("related")
self.id: Optional[str] = payload.get("id")
self.display_name: Optional[str] = payload.get("displayName")
self.description: Optional[str] = payload.get("description")
Expand All @@ -75,6 +75,12 @@ def __init__(
self.intelligence_configuration_ids: Optional[List[str]] = payload.get(
"intelligenceConfigurationIds"
)
self.trait_extraction_strategy_ids: Optional[List[str]] = payload.get(
"traitExtractionStrategyIds"
)
self.observation_extraction_strategy_ids: Optional[List[str]] = payload.get(
"observationExtractionStrategyIds"
)
self.memory_extraction_enabled: Optional[bool] = payload.get(
"memoryExtractionEnabled"
)
Expand All @@ -88,6 +94,8 @@ def __init__(
payload.get("updatedAt")
)
self.version: Optional[int] = payload.get("version")
self.status_url: Optional[str] = payload.get("statusUrl")
self.related: Optional[Dict[str, str]] = payload.get("related")

# Only set _solution if path params are provided (not None)
if id is not None:
Expand Down Expand Up @@ -901,8 +909,8 @@ def __init__(self, payload: Dict[str, Any]):

self.status_timeouts: Optional[ConversationsV2StatusTimeouts] = (
ConversationsV2StatusTimeouts(payload.get("statusTimeouts"))
if payload.get("statusTimeouts") is not None
else None
if isinstance(payload.get("statusTimeouts"), dict)
else payload.get("statusTimeouts")
)
self.capture_rules: Optional[List[ConversationsV2CaptureRule]] = (
[
Expand Down Expand Up @@ -1043,8 +1051,8 @@ def __init__(self, payload: Dict[str, Any]):
ConfigurationList.CreateConfigurationRequestConversationsV1Bridge(
payload.get("conversationsV1Bridge")
)
if payload.get("conversationsV1Bridge") is not None
else None
if isinstance(payload.get("conversationsV1Bridge"), dict)
else payload.get("conversationsV1Bridge")
)

def to_dict(self):
Expand Down Expand Up @@ -1089,8 +1097,8 @@ def __init__(self, payload: Dict[str, Any]):
ConfigurationList.CreateConfigurationRequestChannelSettingsValueStatusTimeouts(
payload.get("statusTimeouts")
)
if payload.get("statusTimeouts") is not None
else None
if isinstance(payload.get("statusTimeouts"), dict)
else payload.get("statusTimeouts")
)
self.capture_rules: Optional[
List[
Expand Down Expand Up @@ -1260,8 +1268,8 @@ def __init__(self, payload: Dict[str, Any]):
ConfigurationList.PatchConfigurationRequestConversationsV1Bridge(
payload.get("conversationsV1Bridge")
)
if payload.get("conversationsV1Bridge") is not None
else None
if isinstance(payload.get("conversationsV1Bridge"), dict)
else payload.get("conversationsV1Bridge")
)

def to_dict(self):
Expand Down Expand Up @@ -1306,8 +1314,8 @@ def __init__(self, payload: Dict[str, Any]):
ConfigurationList.UpdateConfigurationRequestChannelSettingsValueStatusTimeouts(
payload.get("statusTimeouts")
)
if payload.get("statusTimeouts") is not None
else None
if isinstance(payload.get("statusTimeouts"), dict)
else payload.get("statusTimeouts")
)
self.capture_rules: Optional[
List[
Expand Down Expand Up @@ -1424,8 +1432,8 @@ def __init__(self, payload: Dict[str, Any]):
ConfigurationList.CreateConfigurationRequestConversationsV1Bridge(
payload.get("conversationsV1Bridge")
)
if payload.get("conversationsV1Bridge") is not None
else None
if isinstance(payload.get("conversationsV1Bridge"), dict)
else payload.get("conversationsV1Bridge")
)

def to_dict(self):
Expand Down Expand Up @@ -1470,8 +1478,8 @@ def __init__(self, payload: Dict[str, Any]):
ConfigurationList.UpdateConfigurationRequestChannelSettingsValueStatusTimeouts(
payload.get("statusTimeouts")
)
if payload.get("statusTimeouts") is not None
else None
if isinstance(payload.get("statusTimeouts"), dict)
else payload.get("statusTimeouts")
)
self.capture_rules: Optional[
List[
Expand Down
22 changes: 16 additions & 6 deletions twilio/rest/conversations/v2/conversation.py
Original file line number Diff line number Diff line change
Expand Up @@ -824,8 +824,8 @@ def __init__(self, payload: Dict[str, Any]):

self.channel: Optional[ConversationsV2Channel] = (
ConversationsV2Channel(payload.get("channel"))
if payload.get("channel") is not None
else None
if isinstance(payload.get("channel"), dict)
else payload.get("channel")
)
self.address: Optional[str] = payload.get("address")
self.channel_id: Optional[str] = payload.get("channelId")
Expand Down Expand Up @@ -887,8 +887,8 @@ def __init__(self, payload: Dict[str, Any]):
ConversationList.CreateConversationWithConfigRequestConfiguration(
payload.get("configuration")
)
if payload.get("configuration") is not None
else None
if isinstance(payload.get("configuration"), dict)
else payload.get("configuration")
)
self.participants: Optional[
List[ConversationList.CreateConversationWithConfigRequestParticipants]
Expand Down Expand Up @@ -928,6 +928,8 @@ def to_dict(self):
class CreateConversationWithConfigRequestConfiguration(object):
"""
:ivar intelligence_configuration_ids: A list of Conversational Intelligence configuration IDs.
:ivar trait_extraction_strategy_ids: A list of Trait Extraction Strategy IDs.
:ivar observation_extraction_strategy_ids: A list of Observation Extraction Strategy IDs.
:ivar workflows: The Workflows to associate with this Conversation. Overrides the Configuration's own.
"""

Expand All @@ -936,6 +938,12 @@ def __init__(self, payload: Dict[str, Any]):
self.intelligence_configuration_ids: Optional[List[str]] = payload.get(
"intelligenceConfigurationIds"
)
self.trait_extraction_strategy_ids: Optional[List[str]] = payload.get(
"traitExtractionStrategyIds"
)
self.observation_extraction_strategy_ids: Optional[List[str]] = payload.get(
"observationExtractionStrategyIds"
)
self.workflows: Optional[List[ConversationList.ConversationWorkflow]] = (
[
(
Expand All @@ -952,6 +960,8 @@ def __init__(self, payload: Dict[str, Any]):
def to_dict(self):
return {
"intelligenceConfigurationIds": self.intelligence_configuration_ids,
"traitExtractionStrategyIds": self.trait_extraction_strategy_ids,
"observationExtractionStrategyIds": self.observation_extraction_strategy_ids,
"workflows": (
[workflows.to_dict() for workflows in self.workflows]
if self.workflows is not None
Expand Down Expand Up @@ -1041,8 +1051,8 @@ def __init__(self, payload: Dict[str, Any]):
ConversationList.PatchConversationByIdRequestConfiguration(
payload.get("configuration")
)
if payload.get("configuration") is not None
else None
if isinstance(payload.get("configuration"), dict)
else payload.get("configuration")
)
self.metadata: Optional[Dict[str, Optional[str]]] = payload.get("metadata")

Expand Down
24 changes: 12 additions & 12 deletions twilio/rest/iam/v1/o_auth_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ def __init__(self, payload: Dict[str, Any]):
OAuthAppList.IamV1OrganizationVendoroauthappPolicy(
payload.get("policy")
)
if payload.get("policy") is not None
else None
if isinstance(payload.get("policy"), dict)
else payload.get("policy")
)
self.access_token_ttl: Optional[int] = payload.get("access_token_ttl")

Expand Down Expand Up @@ -89,8 +89,8 @@ def __init__(self, payload: Dict[str, Any]):
OAuthAppList.IamV1OrganizationVendorOauthAppUpdateRequestPolicy(
payload.get("policy")
)
if payload.get("policy") is not None
else None
if isinstance(payload.get("policy"), dict)
else payload.get("policy")
)
self.access_token_ttl: Optional[int] = payload.get("access_token_ttl")

Expand Down Expand Up @@ -335,8 +335,8 @@ def __init__(self, payload: Dict[str, Any]):
OAuthAppList.IamV1OrganizationVendoroauthappPolicy(
payload.get("policy")
)
if payload.get("policy") is not None
else None
if isinstance(payload.get("policy"), dict)
else payload.get("policy")
)
self.access_token_ttl: Optional[int] = payload.get("access_token_ttl")

Expand Down Expand Up @@ -372,8 +372,8 @@ def __init__(self, payload: Dict[str, Any]):
OAuthAppList.IamV1OrganizationVendorOauthAppUpdateRequestPolicy(
payload.get("policy")
)
if payload.get("policy") is not None
else None
if isinstance(payload.get("policy"), dict)
else payload.get("policy")
)
self.access_token_ttl: Optional[int] = payload.get("access_token_ttl")

Expand Down Expand Up @@ -657,8 +657,8 @@ def __init__(self, payload: Dict[str, Any]):
OAuthAppList.IamV1OrganizationVendoroauthappPolicy(
payload.get("policy")
)
if payload.get("policy") is not None
else None
if isinstance(payload.get("policy"), dict)
else payload.get("policy")
)
self.access_token_ttl: Optional[int] = payload.get("access_token_ttl")

Expand Down Expand Up @@ -694,8 +694,8 @@ def __init__(self, payload: Dict[str, Any]):
OAuthAppList.IamV1OrganizationVendorOauthAppUpdateRequestPolicy(
payload.get("policy")
)
if payload.get("policy") is not None
else None
if isinstance(payload.get("policy"), dict)
else payload.get("policy")
)
self.access_token_ttl: Optional[int] = payload.get("access_token_ttl")

Expand Down
Loading
Loading