syllable-sdk 0.44.20__py3-none-any.whl → 0.45.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. syllable_sdk/_version.py +3 -3
  2. syllable_sdk/basesdk.py +20 -6
  3. syllable_sdk/models/__init__.py +5 -0
  4. syllable_sdk/models/agent_listop.py +35 -36
  5. syllable_sdk/models/agentcreate.py +38 -39
  6. syllable_sdk/models/agentresponse.py +49 -50
  7. syllable_sdk/models/agentupdate.py +38 -39
  8. syllable_sdk/models/available_targetsop.py +35 -36
  9. syllable_sdk/models/availabletarget.py +1 -17
  10. syllable_sdk/models/batchdetails.py +38 -39
  11. syllable_sdk/models/body_directory_member_bulk_load.py +18 -1
  12. syllable_sdk/models/body_insights_folder_upload_file.py +34 -1
  13. syllable_sdk/models/body_organizations_create.py +30 -19
  14. syllable_sdk/models/body_organizations_delete.py +14 -19
  15. syllable_sdk/models/body_organizations_update.py +34 -30
  16. syllable_sdk/models/body_outbound_batch_upload.py +34 -1
  17. syllable_sdk/models/body_pronunciations_upload_csv.py +18 -1
  18. syllable_sdk/models/bridgephrasesconfig.py +20 -1
  19. syllable_sdk/models/callaction.py +14 -19
  20. syllable_sdk/models/celexpression.py +18 -1
  21. syllable_sdk/models/channel.py +14 -19
  22. syllable_sdk/models/channel_targets_listop.py +35 -36
  23. syllable_sdk/models/channelconfigview.py +20 -19
  24. syllable_sdk/models/channels_listop.py +35 -36
  25. syllable_sdk/models/channeltargetcreaterequest.py +14 -19
  26. syllable_sdk/models/channeltargetresponse.py +14 -19
  27. syllable_sdk/models/channeltargetupdaterequest.py +14 -19
  28. syllable_sdk/models/communicationbatch.py +36 -37
  29. syllable_sdk/models/communicationbatchinput.py +14 -19
  30. syllable_sdk/models/communicationbatchupdate.py +14 -19
  31. syllable_sdk/models/communicationrequestresult.py +37 -38
  32. syllable_sdk/models/conditionaltext.py +14 -19
  33. syllable_sdk/models/conditionalvalue.py +14 -19
  34. syllable_sdk/models/context.py +14 -19
  35. syllable_sdk/models/contexttaskmetadata.py +14 -19
  36. syllable_sdk/models/contexttoolinfo.py +14 -19
  37. syllable_sdk/models/conversation.py +44 -45
  38. syllable_sdk/models/conversations_listop.py +35 -36
  39. syllable_sdk/models/custom_messages_listop.py +35 -36
  40. syllable_sdk/models/custommessagecreaterequest.py +14 -19
  41. syllable_sdk/models/custommessageresponse.py +14 -19
  42. syllable_sdk/models/custommessagerule.py +18 -19
  43. syllable_sdk/models/custommessageupdaterequest.py +14 -19
  44. syllable_sdk/models/daotoolresponse.py +18 -29
  45. syllable_sdk/models/data_sources_listop.py +35 -36
  46. syllable_sdk/models/datasourcecreaterequest.py +14 -19
  47. syllable_sdk/models/datasourcedetailresponse.py +18 -24
  48. syllable_sdk/models/datasourcemetadataresponse.py +18 -24
  49. syllable_sdk/models/datasourceupdaterequest.py +16 -19
  50. syllable_sdk/models/dialogtoolcall.py +1 -17
  51. syllable_sdk/models/dictionarymetadata.py +18 -1
  52. syllable_sdk/models/directory_member_createop.py +18 -1
  53. syllable_sdk/models/directory_member_downloadop.py +18 -1
  54. syllable_sdk/models/directory_member_get_by_idop.py +18 -1
  55. syllable_sdk/models/directory_member_listop.py +36 -37
  56. syllable_sdk/models/directory_member_test_extensionop.py +13 -18
  57. syllable_sdk/models/directory_member_updateop.py +18 -1
  58. syllable_sdk/models/directoryextension.py +14 -19
  59. syllable_sdk/models/directoryextensionnumber.py +14 -19
  60. syllable_sdk/models/directorymember.py +14 -19
  61. syllable_sdk/models/directorymembercreate.py +14 -19
  62. syllable_sdk/models/directorymembertestresponse.py +14 -19
  63. syllable_sdk/models/directorymemberupdate.py +14 -19
  64. syllable_sdk/models/emailconfigurations.py +19 -0
  65. syllable_sdk/models/event.py +38 -39
  66. syllable_sdk/models/events_listop.py +35 -36
  67. syllable_sdk/models/eventtask.py +16 -28
  68. syllable_sdk/models/eventtaskevents.py +14 -19
  69. syllable_sdk/models/expressiontask.py +30 -39
  70. syllable_sdk/models/expressiontaskevents.py +14 -19
  71. syllable_sdk/models/folderdetails.py +14 -19
  72. syllable_sdk/models/get_bridge_phrases_configop.py +14 -19
  73. syllable_sdk/models/getvalueaction.py +16 -19
  74. syllable_sdk/models/incident_listop.py +35 -36
  75. syllable_sdk/models/incidentcreaterequest.py +18 -19
  76. syllable_sdk/models/incidentresponse.py +31 -32
  77. syllable_sdk/models/incidentupdaterequest.py +18 -19
  78. syllable_sdk/models/incrementaction.py +14 -19
  79. syllable_sdk/models/inputparameter.py +27 -36
  80. syllable_sdk/models/insight_tool_listop.py +35 -36
  81. syllable_sdk/models/insights_folder_listop.py +35 -36
  82. syllable_sdk/models/insights_folder_upload_fileop.py +33 -34
  83. syllable_sdk/models/insights_listop.py +35 -36
  84. syllable_sdk/models/insights_upload_list_filesop.py +35 -36
  85. syllable_sdk/models/insights_workflow_listop.py +35 -36
  86. syllable_sdk/models/insightsfolder.py +14 -19
  87. syllable_sdk/models/insightsfolderinput.py +14 -19
  88. syllable_sdk/models/insightsoutput.py +26 -32
  89. syllable_sdk/models/insightsuploadfile.py +37 -38
  90. syllable_sdk/models/insightsworkflowqueuesession.py +14 -19
  91. syllable_sdk/models/insighttooloutput.py +14 -19
  92. syllable_sdk/models/insighttooltestinput.py +14 -19
  93. syllable_sdk/models/insightworkflowcondition.py +34 -35
  94. syllable_sdk/models/insightworkflowinput.py +14 -19
  95. syllable_sdk/models/insightworkflowoutput.py +22 -25
  96. syllable_sdk/models/inspectlatencyresponse.py +18 -1
  97. syllable_sdk/models/internaltool.py +18 -1
  98. syllable_sdk/models/jmespathexpression.py +18 -1
  99. syllable_sdk/models/language_groups_listop.py +35 -36
  100. syllable_sdk/models/languageconfig.py +14 -19
  101. syllable_sdk/models/languagegroupcreaterequest.py +14 -19
  102. syllable_sdk/models/languagegroupresponse.py +14 -19
  103. syllable_sdk/models/languagegroupupdaterequest.py +14 -19
  104. syllable_sdk/models/languagesamplecreaterequest.py +16 -24
  105. syllable_sdk/models/latencyentry.py +14 -19
  106. syllable_sdk/models/listresponse_agentresponse_.py +14 -19
  107. syllable_sdk/models/listresponse_availabletarget_.py +14 -19
  108. syllable_sdk/models/listresponse_channel_.py +14 -19
  109. syllable_sdk/models/listresponse_channeltargetresponse_.py +14 -19
  110. syllable_sdk/models/listresponse_communicationbatch_.py +14 -19
  111. syllable_sdk/models/listresponse_conversation_.py +14 -19
  112. syllable_sdk/models/listresponse_custommessageresponse_.py +14 -19
  113. syllable_sdk/models/listresponse_dashboardresponse_.py +14 -19
  114. syllable_sdk/models/listresponse_datasourcemetadataresponse_.py +14 -19
  115. syllable_sdk/models/listresponse_directorymember_.py +14 -19
  116. syllable_sdk/models/listresponse_event_.py +14 -19
  117. syllable_sdk/models/listresponse_incidentresponse_.py +14 -19
  118. syllable_sdk/models/listresponse_insightsfolder_.py +14 -19
  119. syllable_sdk/models/listresponse_insightsoutput_.py +14 -19
  120. syllable_sdk/models/listresponse_insightsuploadfile_.py +14 -19
  121. syllable_sdk/models/listresponse_insighttooloutput_.py +14 -19
  122. syllable_sdk/models/listresponse_insightworkflowoutput_.py +14 -19
  123. syllable_sdk/models/listresponse_languagegroupresponse_.py +14 -19
  124. syllable_sdk/models/listresponse_outboundcampaign_.py +14 -19
  125. syllable_sdk/models/listresponse_promptresponse_.py +14 -19
  126. syllable_sdk/models/listresponse_roleresponse_.py +14 -19
  127. syllable_sdk/models/listresponse_serviceresponse_.py +14 -19
  128. syllable_sdk/models/listresponse_session_.py +14 -19
  129. syllable_sdk/models/listresponse_sessionlabel_.py +14 -19
  130. syllable_sdk/models/listresponse_toolresponse_.py +14 -19
  131. syllable_sdk/models/listresponse_userresponse_.py +14 -19
  132. syllable_sdk/models/listresponse_voicegroupresponse_.py +14 -19
  133. syllable_sdk/models/loadtoolfromfiletask.py +16 -27
  134. syllable_sdk/models/nextstep.py +14 -19
  135. syllable_sdk/models/organizationchannelconfig.py +24 -29
  136. syllable_sdk/models/organizationchannelcreaterequest.py +14 -19
  137. syllable_sdk/models/organizationchannelupdaterequest.py +14 -19
  138. syllable_sdk/models/organizationresponse.py +32 -33
  139. syllable_sdk/models/outbound_batch_listop.py +35 -36
  140. syllable_sdk/models/outbound_batch_resultsop.py +13 -18
  141. syllable_sdk/models/outbound_batch_uploadop.py +18 -1
  142. syllable_sdk/models/outbound_campaign_listop.py +35 -36
  143. syllable_sdk/models/outboundcampaign.py +47 -48
  144. syllable_sdk/models/outboundcampaigninput.py +43 -44
  145. syllable_sdk/models/permissionresponse.py +14 -19
  146. syllable_sdk/models/post_list_dashboardop.py +35 -36
  147. syllable_sdk/models/promptcreaterequest.py +26 -32
  148. syllable_sdk/models/prompthistory.py +24 -30
  149. syllable_sdk/models/promptllmconfig.py +16 -26
  150. syllable_sdk/models/promptresponse.py +41 -42
  151. syllable_sdk/models/prompts_listop.py +35 -36
  152. syllable_sdk/models/promptupdaterequest.py +26 -32
  153. syllable_sdk/models/pronunciationoverride.py +28 -1
  154. syllable_sdk/models/pronunciationoverridesdictionary.py +18 -1
  155. syllable_sdk/models/pronunciationscsvuploadresponse.py +18 -1
  156. syllable_sdk/models/rolecreaterequest.py +14 -19
  157. syllable_sdk/models/roleresponse.py +14 -19
  158. syllable_sdk/models/roles_deleteop.py +13 -18
  159. syllable_sdk/models/roles_listop.py +35 -36
  160. syllable_sdk/models/roleupdaterequest.py +14 -19
  161. syllable_sdk/models/saveaction.py +14 -19
  162. syllable_sdk/models/sayaction.py +14 -19
  163. syllable_sdk/models/security.py +18 -1
  164. syllable_sdk/models/service_listop.py +35 -36
  165. syllable_sdk/models/servicecreaterequest.py +14 -19
  166. syllable_sdk/models/serviceresponse.py +14 -19
  167. syllable_sdk/models/serviceupdaterequest.py +14 -19
  168. syllable_sdk/models/session.py +60 -61
  169. syllable_sdk/models/session_labels_listop.py +35 -36
  170. syllable_sdk/models/sessionaction.py +18 -19
  171. syllable_sdk/models/sessionlabel.py +14 -19
  172. syllable_sdk/models/sessionlabelcreate.py +14 -19
  173. syllable_sdk/models/sessionrecordingresponse.py +14 -19
  174. syllable_sdk/models/sessions_listop.py +35 -36
  175. syllable_sdk/models/sessionsummaryresponse.py +14 -19
  176. syllable_sdk/models/sessiontext.py +14 -19
  177. syllable_sdk/models/setvalueaction.py +14 -19
  178. syllable_sdk/models/statictoolparameter.py +14 -19
  179. syllable_sdk/models/step.py +18 -1
  180. syllable_sdk/models/stepeventactions.py +14 -19
  181. syllable_sdk/models/stepstask.py +25 -28
  182. syllable_sdk/models/steptools.py +14 -19
  183. syllable_sdk/models/summaryentry.py +14 -19
  184. syllable_sdk/models/supportedllm.py +14 -19
  185. syllable_sdk/models/takeoutstatusresponse.py +14 -19
  186. syllable_sdk/models/telephonyconfigurations.py +38 -39
  187. syllable_sdk/models/testmessage.py +16 -19
  188. syllable_sdk/models/testmessageresponse.py +14 -19
  189. syllable_sdk/models/tool_listop.py +35 -36
  190. syllable_sdk/models/tooldefinition.py +34 -35
  191. syllable_sdk/models/tooldetailresponse.py +18 -29
  192. syllable_sdk/models/tooloptions.py +18 -1
  193. syllable_sdk/models/toolparametertransform.py +14 -19
  194. syllable_sdk/models/toolparametertransformcondition.py +14 -19
  195. syllable_sdk/models/toolresponse.py +18 -29
  196. syllable_sdk/models/toolupdaterequest.py +14 -19
  197. syllable_sdk/models/twiliochannelconfigupdate.py +14 -19
  198. syllable_sdk/models/twiliochannelupdaterequest.py +14 -19
  199. syllable_sdk/models/update_bridge_phrases_configop.py +13 -18
  200. syllable_sdk/models/usercreaterequest.py +14 -19
  201. syllable_sdk/models/userresponse.py +30 -31
  202. syllable_sdk/models/users_listop.py +35 -36
  203. syllable_sdk/models/users_send_emailop.py +18 -1
  204. syllable_sdk/models/userupdaterequest.py +14 -19
  205. syllable_sdk/models/variable.py +38 -39
  206. syllable_sdk/models/voice_groups_listop.py +35 -36
  207. syllable_sdk/models/voicegroupcreaterequest.py +14 -19
  208. syllable_sdk/models/voicegroupresponse.py +14 -19
  209. syllable_sdk/models/voicegroupupdaterequest.py +14 -19
  210. syllable_sdk/models/voicesamplecreaterequest.py +16 -24
  211. syllable_sdk/utils/__init__.py +10 -1
  212. {syllable_sdk-0.44.20.dist-info → syllable_sdk-0.45.0.dist-info}/METADATA +3 -3
  213. {syllable_sdk-0.44.20.dist-info → syllable_sdk-0.45.0.dist-info}/RECORD +214 -213
  214. {syllable_sdk-0.44.20.dist-info → syllable_sdk-0.45.0.dist-info}/WHEEL +0 -0
@@ -45,30 +45,25 @@ class ListResponseRoleResponse(BaseModel):
45
45
 
46
46
  @model_serializer(mode="wrap")
47
47
  def serialize_model(self, handler):
48
- optional_fields = ["total_pages", "total_count"]
49
- nullable_fields = ["total_pages", "total_count"]
50
- null_default_fields = []
51
-
48
+ optional_fields = set(["total_pages", "total_count"])
49
+ nullable_fields = set(["total_pages", "total_count"])
52
50
  serialized = handler(self)
53
-
54
51
  m = {}
55
52
 
56
53
  for n, f in type(self).model_fields.items():
57
54
  k = f.alias or n
58
55
  val = serialized.get(k)
59
- serialized.pop(k, None)
60
-
61
- optional_nullable = k in optional_fields and k in nullable_fields
62
- is_set = (
63
- self.__pydantic_fields_set__.intersection({n})
64
- or k in null_default_fields
65
- ) # pylint: disable=no-member
66
-
67
- if val is not None and val != UNSET_SENTINEL:
68
- m[k] = val
69
- elif val != UNSET_SENTINEL and (
70
- not k in optional_fields or (optional_nullable and is_set)
71
- ):
72
- m[k] = val
56
+ is_nullable_and_explicitly_set = (
57
+ k in nullable_fields
58
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
59
+ )
60
+
61
+ if val != UNSET_SENTINEL:
62
+ if (
63
+ val is not None
64
+ or k not in optional_fields
65
+ or is_nullable_and_explicitly_set
66
+ ):
67
+ m[k] = val
73
68
 
74
69
  return m
@@ -45,30 +45,25 @@ class ListResponseServiceResponse(BaseModel):
45
45
 
46
46
  @model_serializer(mode="wrap")
47
47
  def serialize_model(self, handler):
48
- optional_fields = ["total_pages", "total_count"]
49
- nullable_fields = ["total_pages", "total_count"]
50
- null_default_fields = []
51
-
48
+ optional_fields = set(["total_pages", "total_count"])
49
+ nullable_fields = set(["total_pages", "total_count"])
52
50
  serialized = handler(self)
53
-
54
51
  m = {}
55
52
 
56
53
  for n, f in type(self).model_fields.items():
57
54
  k = f.alias or n
58
55
  val = serialized.get(k)
59
- serialized.pop(k, None)
60
-
61
- optional_nullable = k in optional_fields and k in nullable_fields
62
- is_set = (
63
- self.__pydantic_fields_set__.intersection({n})
64
- or k in null_default_fields
65
- ) # pylint: disable=no-member
66
-
67
- if val is not None and val != UNSET_SENTINEL:
68
- m[k] = val
69
- elif val != UNSET_SENTINEL and (
70
- not k in optional_fields or (optional_nullable and is_set)
71
- ):
72
- m[k] = val
56
+ is_nullable_and_explicitly_set = (
57
+ k in nullable_fields
58
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
59
+ )
60
+
61
+ if val != UNSET_SENTINEL:
62
+ if (
63
+ val is not None
64
+ or k not in optional_fields
65
+ or is_nullable_and_explicitly_set
66
+ ):
67
+ m[k] = val
73
68
 
74
69
  return m
@@ -45,30 +45,25 @@ class ListResponseSession(BaseModel):
45
45
 
46
46
  @model_serializer(mode="wrap")
47
47
  def serialize_model(self, handler):
48
- optional_fields = ["total_pages", "total_count"]
49
- nullable_fields = ["total_pages", "total_count"]
50
- null_default_fields = []
51
-
48
+ optional_fields = set(["total_pages", "total_count"])
49
+ nullable_fields = set(["total_pages", "total_count"])
52
50
  serialized = handler(self)
53
-
54
51
  m = {}
55
52
 
56
53
  for n, f in type(self).model_fields.items():
57
54
  k = f.alias or n
58
55
  val = serialized.get(k)
59
- serialized.pop(k, None)
60
-
61
- optional_nullable = k in optional_fields and k in nullable_fields
62
- is_set = (
63
- self.__pydantic_fields_set__.intersection({n})
64
- or k in null_default_fields
65
- ) # pylint: disable=no-member
66
-
67
- if val is not None and val != UNSET_SENTINEL:
68
- m[k] = val
69
- elif val != UNSET_SENTINEL and (
70
- not k in optional_fields or (optional_nullable and is_set)
71
- ):
72
- m[k] = val
56
+ is_nullable_and_explicitly_set = (
57
+ k in nullable_fields
58
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
59
+ )
60
+
61
+ if val != UNSET_SENTINEL:
62
+ if (
63
+ val is not None
64
+ or k not in optional_fields
65
+ or is_nullable_and_explicitly_set
66
+ ):
67
+ m[k] = val
73
68
 
74
69
  return m
@@ -45,30 +45,25 @@ class ListResponseSessionLabel(BaseModel):
45
45
 
46
46
  @model_serializer(mode="wrap")
47
47
  def serialize_model(self, handler):
48
- optional_fields = ["total_pages", "total_count"]
49
- nullable_fields = ["total_pages", "total_count"]
50
- null_default_fields = []
51
-
48
+ optional_fields = set(["total_pages", "total_count"])
49
+ nullable_fields = set(["total_pages", "total_count"])
52
50
  serialized = handler(self)
53
-
54
51
  m = {}
55
52
 
56
53
  for n, f in type(self).model_fields.items():
57
54
  k = f.alias or n
58
55
  val = serialized.get(k)
59
- serialized.pop(k, None)
60
-
61
- optional_nullable = k in optional_fields and k in nullable_fields
62
- is_set = (
63
- self.__pydantic_fields_set__.intersection({n})
64
- or k in null_default_fields
65
- ) # pylint: disable=no-member
66
-
67
- if val is not None and val != UNSET_SENTINEL:
68
- m[k] = val
69
- elif val != UNSET_SENTINEL and (
70
- not k in optional_fields or (optional_nullable and is_set)
71
- ):
72
- m[k] = val
56
+ is_nullable_and_explicitly_set = (
57
+ k in nullable_fields
58
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
59
+ )
60
+
61
+ if val != UNSET_SENTINEL:
62
+ if (
63
+ val is not None
64
+ or k not in optional_fields
65
+ or is_nullable_and_explicitly_set
66
+ ):
67
+ m[k] = val
73
68
 
74
69
  return m
@@ -45,30 +45,25 @@ class ListResponseToolResponse(BaseModel):
45
45
 
46
46
  @model_serializer(mode="wrap")
47
47
  def serialize_model(self, handler):
48
- optional_fields = ["total_pages", "total_count"]
49
- nullable_fields = ["total_pages", "total_count"]
50
- null_default_fields = []
51
-
48
+ optional_fields = set(["total_pages", "total_count"])
49
+ nullable_fields = set(["total_pages", "total_count"])
52
50
  serialized = handler(self)
53
-
54
51
  m = {}
55
52
 
56
53
  for n, f in type(self).model_fields.items():
57
54
  k = f.alias or n
58
55
  val = serialized.get(k)
59
- serialized.pop(k, None)
60
-
61
- optional_nullable = k in optional_fields and k in nullable_fields
62
- is_set = (
63
- self.__pydantic_fields_set__.intersection({n})
64
- or k in null_default_fields
65
- ) # pylint: disable=no-member
66
-
67
- if val is not None and val != UNSET_SENTINEL:
68
- m[k] = val
69
- elif val != UNSET_SENTINEL and (
70
- not k in optional_fields or (optional_nullable and is_set)
71
- ):
72
- m[k] = val
56
+ is_nullable_and_explicitly_set = (
57
+ k in nullable_fields
58
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
59
+ )
60
+
61
+ if val != UNSET_SENTINEL:
62
+ if (
63
+ val is not None
64
+ or k not in optional_fields
65
+ or is_nullable_and_explicitly_set
66
+ ):
67
+ m[k] = val
73
68
 
74
69
  return m
@@ -45,30 +45,25 @@ class ListResponseUserResponse(BaseModel):
45
45
 
46
46
  @model_serializer(mode="wrap")
47
47
  def serialize_model(self, handler):
48
- optional_fields = ["total_pages", "total_count"]
49
- nullable_fields = ["total_pages", "total_count"]
50
- null_default_fields = []
51
-
48
+ optional_fields = set(["total_pages", "total_count"])
49
+ nullable_fields = set(["total_pages", "total_count"])
52
50
  serialized = handler(self)
53
-
54
51
  m = {}
55
52
 
56
53
  for n, f in type(self).model_fields.items():
57
54
  k = f.alias or n
58
55
  val = serialized.get(k)
59
- serialized.pop(k, None)
60
-
61
- optional_nullable = k in optional_fields and k in nullable_fields
62
- is_set = (
63
- self.__pydantic_fields_set__.intersection({n})
64
- or k in null_default_fields
65
- ) # pylint: disable=no-member
66
-
67
- if val is not None and val != UNSET_SENTINEL:
68
- m[k] = val
69
- elif val != UNSET_SENTINEL and (
70
- not k in optional_fields or (optional_nullable and is_set)
71
- ):
72
- m[k] = val
56
+ is_nullable_and_explicitly_set = (
57
+ k in nullable_fields
58
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
59
+ )
60
+
61
+ if val != UNSET_SENTINEL:
62
+ if (
63
+ val is not None
64
+ or k not in optional_fields
65
+ or is_nullable_and_explicitly_set
66
+ ):
67
+ m[k] = val
73
68
 
74
69
  return m
@@ -45,30 +45,25 @@ class ListResponseVoiceGroupResponse(BaseModel):
45
45
 
46
46
  @model_serializer(mode="wrap")
47
47
  def serialize_model(self, handler):
48
- optional_fields = ["total_pages", "total_count"]
49
- nullable_fields = ["total_pages", "total_count"]
50
- null_default_fields = []
51
-
48
+ optional_fields = set(["total_pages", "total_count"])
49
+ nullable_fields = set(["total_pages", "total_count"])
52
50
  serialized = handler(self)
53
-
54
51
  m = {}
55
52
 
56
53
  for n, f in type(self).model_fields.items():
57
54
  k = f.alias or n
58
55
  val = serialized.get(k)
59
- serialized.pop(k, None)
60
-
61
- optional_nullable = k in optional_fields and k in nullable_fields
62
- is_set = (
63
- self.__pydantic_fields_set__.intersection({n})
64
- or k in null_default_fields
65
- ) # pylint: disable=no-member
66
-
67
- if val is not None and val != UNSET_SENTINEL:
68
- m[k] = val
69
- elif val != UNSET_SENTINEL and (
70
- not k in optional_fields or (optional_nullable and is_set)
71
- ):
72
- m[k] = val
56
+ is_nullable_and_explicitly_set = (
57
+ k in nullable_fields
58
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
59
+ )
60
+
61
+ if val != UNSET_SENTINEL:
62
+ if (
63
+ val is not None
64
+ or k not in optional_fields
65
+ or is_nullable_and_explicitly_set
66
+ ):
67
+ m[k] = val
73
68
 
74
69
  return m
@@ -75,38 +75,27 @@ class LoadToolFromFileTask(BaseModel):
75
75
 
76
76
  @model_serializer(mode="wrap")
77
77
  def serialize_model(self, handler):
78
- optional_fields = [
79
- "id",
80
- "config",
81
- "variables",
82
- "metadata",
83
- "tool",
84
- "type",
85
- "version",
86
- ]
87
- nullable_fields = ["id", "config", "variables", "metadata", "tool"]
88
- null_default_fields = []
89
-
78
+ optional_fields = set(
79
+ ["id", "config", "variables", "metadata", "tool", "type", "version"]
80
+ )
81
+ nullable_fields = set(["id", "config", "variables", "metadata", "tool"])
90
82
  serialized = handler(self)
91
-
92
83
  m = {}
93
84
 
94
85
  for n, f in type(self).model_fields.items():
95
86
  k = f.alias or n
96
87
  val = serialized.get(k)
97
- serialized.pop(k, None)
98
-
99
- optional_nullable = k in optional_fields and k in nullable_fields
100
- is_set = (
101
- self.__pydantic_fields_set__.intersection({n})
102
- or k in null_default_fields
103
- ) # pylint: disable=no-member
104
-
105
- if val is not None and val != UNSET_SENTINEL:
106
- m[k] = val
107
- elif val != UNSET_SENTINEL and (
108
- not k in optional_fields or (optional_nullable and is_set)
109
- ):
110
- m[k] = val
88
+ is_nullable_and_explicitly_set = (
89
+ k in nullable_fields
90
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
91
+ )
92
+
93
+ if val != UNSET_SENTINEL:
94
+ if (
95
+ val is not None
96
+ or k not in optional_fields
97
+ or is_nullable_and_explicitly_set
98
+ ):
99
+ m[k] = val
111
100
 
112
101
  return m
@@ -68,30 +68,25 @@ class NextStep(BaseModel):
68
68
 
69
69
  @model_serializer(mode="wrap")
70
70
  def serialize_model(self, handler):
71
- optional_fields = ["if", "requires"]
72
- nullable_fields = ["if", "requires"]
73
- null_default_fields = []
74
-
71
+ optional_fields = set(["if", "requires"])
72
+ nullable_fields = set(["if", "requires"])
75
73
  serialized = handler(self)
76
-
77
74
  m = {}
78
75
 
79
76
  for n, f in type(self).model_fields.items():
80
77
  k = f.alias or n
81
78
  val = serialized.get(k)
82
- serialized.pop(k, None)
83
-
84
- optional_nullable = k in optional_fields and k in nullable_fields
85
- is_set = (
86
- self.__pydantic_fields_set__.intersection({n})
87
- or k in null_default_fields
88
- ) # pylint: disable=no-member
89
-
90
- if val is not None and val != UNSET_SENTINEL:
91
- m[k] = val
92
- elif val != UNSET_SENTINEL and (
93
- not k in optional_fields or (optional_nullable and is_set)
94
- ):
95
- m[k] = val
79
+ is_nullable_and_explicitly_set = (
80
+ k in nullable_fields
81
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
82
+ )
83
+
84
+ if val != UNSET_SENTINEL:
85
+ if (
86
+ val is not None
87
+ or k not in optional_fields
88
+ or is_nullable_and_explicitly_set
89
+ ):
90
+ m[k] = val
96
91
 
97
92
  return m
@@ -1,6 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from .emailconfigurations import EmailConfigurations, EmailConfigurationsTypedDict
4
5
  from .telephonyconfigurations import (
5
6
  TelephonyConfigurations,
6
7
  TelephonyConfigurationsTypedDict,
@@ -28,6 +29,8 @@ class OrganizationChannelConfigTypedDict(TypedDict):
28
29
  r"""Provider-specific credentials. Initially to be used for AfricasTalking creds.In a future this would be used for Twilio creds too (removing the account_sid and auth_token fields)."""
29
30
  telephony: NotRequired[Nullable[TelephonyConfigurationsTypedDict]]
30
31
  r"""Telephony configurations to be applied to the targets under the channel"""
32
+ email: NotRequired[Nullable[EmailConfigurationsTypedDict]]
33
+ r"""Email configurations (required for email channels)"""
31
34
 
32
35
 
33
36
  class OrganizationChannelConfig(BaseModel):
@@ -45,42 +48,34 @@ class OrganizationChannelConfig(BaseModel):
45
48
  telephony: OptionalNullable[TelephonyConfigurations] = UNSET
46
49
  r"""Telephony configurations to be applied to the targets under the channel"""
47
50
 
51
+ email: OptionalNullable[EmailConfigurations] = UNSET
52
+ r"""Email configurations (required for email channels)"""
53
+
48
54
  @model_serializer(mode="wrap")
49
55
  def serialize_model(self, handler):
50
- optional_fields = [
51
- "account_sid",
52
- "auth_token",
53
- "provider_credentials",
54
- "telephony",
55
- ]
56
- nullable_fields = [
57
- "account_sid",
58
- "auth_token",
59
- "provider_credentials",
60
- "telephony",
61
- ]
62
- null_default_fields = []
63
-
56
+ optional_fields = set(
57
+ ["account_sid", "auth_token", "provider_credentials", "telephony", "email"]
58
+ )
59
+ nullable_fields = set(
60
+ ["account_sid", "auth_token", "provider_credentials", "telephony", "email"]
61
+ )
64
62
  serialized = handler(self)
65
-
66
63
  m = {}
67
64
 
68
65
  for n, f in type(self).model_fields.items():
69
66
  k = f.alias or n
70
67
  val = serialized.get(k)
71
- serialized.pop(k, None)
72
-
73
- optional_nullable = k in optional_fields and k in nullable_fields
74
- is_set = (
75
- self.__pydantic_fields_set__.intersection({n})
76
- or k in null_default_fields
77
- ) # pylint: disable=no-member
78
-
79
- if val is not None and val != UNSET_SENTINEL:
80
- m[k] = val
81
- elif val != UNSET_SENTINEL and (
82
- not k in optional_fields or (optional_nullable and is_set)
83
- ):
84
- m[k] = val
68
+ is_nullable_and_explicitly_set = (
69
+ k in nullable_fields
70
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
71
+ )
72
+
73
+ if val != UNSET_SENTINEL:
74
+ if (
75
+ val is not None
76
+ or k not in optional_fields
77
+ or is_nullable_and_explicitly_set
78
+ ):
79
+ m[k] = val
85
80
 
86
81
  return m
@@ -53,30 +53,25 @@ class OrganizationChannelCreateRequest(BaseModel):
53
53
 
54
54
  @model_serializer(mode="wrap")
55
55
  def serialize_model(self, handler):
56
- optional_fields = ["supported_modes", "is_system_channel"]
57
- nullable_fields = ["supported_modes"]
58
- null_default_fields = []
59
-
56
+ optional_fields = set(["supported_modes", "is_system_channel"])
57
+ nullable_fields = set(["supported_modes"])
60
58
  serialized = handler(self)
61
-
62
59
  m = {}
63
60
 
64
61
  for n, f in type(self).model_fields.items():
65
62
  k = f.alias or n
66
63
  val = serialized.get(k)
67
- serialized.pop(k, None)
68
-
69
- optional_nullable = k in optional_fields and k in nullable_fields
70
- is_set = (
71
- self.__pydantic_fields_set__.intersection({n})
72
- or k in null_default_fields
73
- ) # pylint: disable=no-member
74
-
75
- if val is not None and val != UNSET_SENTINEL:
76
- m[k] = val
77
- elif val != UNSET_SENTINEL and (
78
- not k in optional_fields or (optional_nullable and is_set)
79
- ):
80
- m[k] = val
64
+ is_nullable_and_explicitly_set = (
65
+ k in nullable_fields
66
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
67
+ )
68
+
69
+ if val != UNSET_SENTINEL:
70
+ if (
71
+ val is not None
72
+ or k not in optional_fields
73
+ or is_nullable_and_explicitly_set
74
+ ):
75
+ m[k] = val
81
76
 
82
77
  return m
@@ -58,30 +58,25 @@ class OrganizationChannelUpdateRequest(BaseModel):
58
58
 
59
59
  @model_serializer(mode="wrap")
60
60
  def serialize_model(self, handler):
61
- optional_fields = ["supported_modes", "is_system_channel"]
62
- nullable_fields = ["supported_modes"]
63
- null_default_fields = []
64
-
61
+ optional_fields = set(["supported_modes", "is_system_channel"])
62
+ nullable_fields = set(["supported_modes"])
65
63
  serialized = handler(self)
66
-
67
64
  m = {}
68
65
 
69
66
  for n, f in type(self).model_fields.items():
70
67
  k = f.alias or n
71
68
  val = serialized.get(k)
72
- serialized.pop(k, None)
73
-
74
- optional_nullable = k in optional_fields and k in nullable_fields
75
- is_set = (
76
- self.__pydantic_fields_set__.intersection({n})
77
- or k in null_default_fields
78
- ) # pylint: disable=no-member
79
-
80
- if val is not None and val != UNSET_SENTINEL:
81
- m[k] = val
82
- elif val != UNSET_SENTINEL and (
83
- not k in optional_fields or (optional_nullable and is_set)
84
- ):
85
- m[k] = val
69
+ is_nullable_and_explicitly_set = (
70
+ k in nullable_fields
71
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
72
+ )
73
+
74
+ if val != UNSET_SENTINEL:
75
+ if (
76
+ val is not None
77
+ or k not in optional_fields
78
+ or is_nullable_and_explicitly_set
79
+ ):
80
+ m[k] = val
86
81
 
87
82
  return m