syllable-sdk 0.44.17__py3-none-any.whl → 0.44.24__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 (217) 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 +13 -4
  212. syllable_sdk/utils/enums.py +60 -0
  213. syllable_sdk/utils/requestbodies.py +3 -3
  214. syllable_sdk/utils/serializers.py +0 -20
  215. {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.24.dist-info}/METADATA +1 -1
  216. {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.24.dist-info}/RECORD +217 -216
  217. {syllable_sdk-0.44.17.dist-info → syllable_sdk-0.44.24.dist-info}/WHEEL +0 -0
@@ -40,30 +40,25 @@ class DirectoryMemberTestExtensionRequest(BaseModel):
40
40
 
41
41
  @model_serializer(mode="wrap")
42
42
  def serialize_model(self, handler):
43
- optional_fields = ["language_code"]
44
- nullable_fields = ["language_code"]
45
- null_default_fields = []
46
-
43
+ optional_fields = set(["language_code"])
44
+ nullable_fields = set(["language_code"])
47
45
  serialized = handler(self)
48
-
49
46
  m = {}
50
47
 
51
48
  for n, f in type(self).model_fields.items():
52
49
  k = f.alias or n
53
50
  val = serialized.get(k)
54
- serialized.pop(k, None)
55
-
56
- optional_nullable = k in optional_fields and k in nullable_fields
57
- is_set = (
58
- self.__pydantic_fields_set__.intersection({n})
59
- or k in null_default_fields
60
- ) # pylint: disable=no-member
51
+ is_nullable_and_explicitly_set = (
52
+ k in nullable_fields
53
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
54
+ )
61
55
 
62
- if val is not None and val != UNSET_SENTINEL:
63
- m[k] = val
64
- elif val != UNSET_SENTINEL and (
65
- not k in optional_fields or (optional_nullable and is_set)
66
- ):
67
- m[k] = val
56
+ if val != UNSET_SENTINEL:
57
+ if (
58
+ val is not None
59
+ or k not in optional_fields
60
+ or is_nullable_and_explicitly_set
61
+ ):
62
+ m[k] = val
68
63
 
69
64
  return m
@@ -3,7 +3,8 @@
3
3
  from __future__ import annotations
4
4
  from .directorymemberupdate import DirectoryMemberUpdate, DirectoryMemberUpdateTypedDict
5
5
  from .directoryresponseformat import DirectoryResponseFormat
6
- from syllable_sdk.types import BaseModel
6
+ from pydantic import model_serializer
7
+ from syllable_sdk.types import BaseModel, UNSET_SENTINEL
7
8
  from syllable_sdk.utils import (
8
9
  FieldMetadata,
9
10
  PathParamMetadata,
@@ -36,3 +37,19 @@ class DirectoryMemberUpdateRequest(BaseModel):
36
37
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
37
38
  ] = None
38
39
  r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
40
+
41
+ @model_serializer(mode="wrap")
42
+ def serialize_model(self, handler):
43
+ optional_fields = set(["response_format"])
44
+ serialized = handler(self)
45
+ m = {}
46
+
47
+ for n, f in type(self).model_fields.items():
48
+ k = f.alias or n
49
+ val = serialized.get(k)
50
+
51
+ if val != UNSET_SENTINEL:
52
+ if val is not None or k not in optional_fields:
53
+ m[k] = val
54
+
55
+ return m
@@ -33,30 +33,25 @@ class DirectoryExtension(BaseModel):
33
33
 
34
34
  @model_serializer(mode="wrap")
35
35
  def serialize_model(self, handler):
36
- optional_fields = ["numbers"]
37
- nullable_fields = ["numbers"]
38
- null_default_fields = []
39
-
36
+ optional_fields = set(["numbers"])
37
+ nullable_fields = set(["numbers"])
40
38
  serialized = handler(self)
41
-
42
39
  m = {}
43
40
 
44
41
  for n, f in type(self).model_fields.items():
45
42
  k = f.alias or n
46
43
  val = serialized.get(k)
47
- serialized.pop(k, None)
48
-
49
- optional_nullable = k in optional_fields and k in nullable_fields
50
- is_set = (
51
- self.__pydantic_fields_set__.intersection({n})
52
- or k in null_default_fields
53
- ) # pylint: disable=no-member
54
-
55
- if val is not None and val != UNSET_SENTINEL:
56
- m[k] = val
57
- elif val != UNSET_SENTINEL and (
58
- not k in optional_fields or (optional_nullable and is_set)
59
- ):
60
- m[k] = val
44
+ is_nullable_and_explicitly_set = (
45
+ k in nullable_fields
46
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
47
+ )
48
+
49
+ if val != UNSET_SENTINEL:
50
+ if (
51
+ val is not None
52
+ or k not in optional_fields
53
+ or is_nullable_and_explicitly_set
54
+ ):
55
+ m[k] = val
61
56
 
62
57
  return m
@@ -29,30 +29,25 @@ class DirectoryExtensionNumber(BaseModel):
29
29
 
30
30
  @model_serializer(mode="wrap")
31
31
  def serialize_model(self, handler):
32
- optional_fields = ["rules"]
33
- nullable_fields = ["rules"]
34
- null_default_fields = []
35
-
32
+ optional_fields = set(["rules"])
33
+ nullable_fields = set(["rules"])
36
34
  serialized = handler(self)
37
-
38
35
  m = {}
39
36
 
40
37
  for n, f in type(self).model_fields.items():
41
38
  k = f.alias or n
42
39
  val = serialized.get(k)
43
- serialized.pop(k, None)
44
-
45
- optional_nullable = k in optional_fields and k in nullable_fields
46
- is_set = (
47
- self.__pydantic_fields_set__.intersection({n})
48
- or k in null_default_fields
49
- ) # pylint: disable=no-member
50
-
51
- if val is not None and val != UNSET_SENTINEL:
52
- m[k] = val
53
- elif val != UNSET_SENTINEL and (
54
- not k in optional_fields or (optional_nullable and is_set)
55
- ):
56
- m[k] = val
40
+ is_nullable_and_explicitly_set = (
41
+ k in nullable_fields
42
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
43
+ )
44
+
45
+ if val != UNSET_SENTINEL:
46
+ if (
47
+ val is not None
48
+ or k not in optional_fields
49
+ or is_nullable_and_explicitly_set
50
+ ):
51
+ m[k] = val
57
52
 
58
53
  return m
@@ -60,30 +60,25 @@ class DirectoryMember(BaseModel):
60
60
 
61
61
  @model_serializer(mode="wrap")
62
62
  def serialize_model(self, handler):
63
- optional_fields = ["extensions", "contact_tags", "last_updated_by"]
64
- nullable_fields = ["extensions", "contact_tags", "last_updated_by"]
65
- null_default_fields = []
66
-
63
+ optional_fields = set(["extensions", "contact_tags", "last_updated_by"])
64
+ nullable_fields = set(["extensions", "contact_tags", "last_updated_by"])
67
65
  serialized = handler(self)
68
-
69
66
  m = {}
70
67
 
71
68
  for n, f in type(self).model_fields.items():
72
69
  k = f.alias or n
73
70
  val = serialized.get(k)
74
- serialized.pop(k, None)
75
-
76
- optional_nullable = k in optional_fields and k in nullable_fields
77
- is_set = (
78
- self.__pydantic_fields_set__.intersection({n})
79
- or k in null_default_fields
80
- ) # pylint: disable=no-member
81
-
82
- if val is not None and val != UNSET_SENTINEL:
83
- m[k] = val
84
- elif val != UNSET_SENTINEL and (
85
- not k in optional_fields or (optional_nullable and is_set)
86
- ):
87
- m[k] = val
71
+ is_nullable_and_explicitly_set = (
72
+ k in nullable_fields
73
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
74
+ )
75
+
76
+ if val != UNSET_SENTINEL:
77
+ if (
78
+ val is not None
79
+ or k not in optional_fields
80
+ or is_nullable_and_explicitly_set
81
+ ):
82
+ m[k] = val
88
83
 
89
84
  return m
@@ -44,30 +44,25 @@ class DirectoryMemberCreate(BaseModel):
44
44
 
45
45
  @model_serializer(mode="wrap")
46
46
  def serialize_model(self, handler):
47
- optional_fields = ["extensions", "contact_tags"]
48
- nullable_fields = ["extensions", "contact_tags"]
49
- null_default_fields = []
50
-
47
+ optional_fields = set(["extensions", "contact_tags"])
48
+ nullable_fields = set(["extensions", "contact_tags"])
51
49
  serialized = handler(self)
52
-
53
50
  m = {}
54
51
 
55
52
  for n, f in type(self).model_fields.items():
56
53
  k = f.alias or n
57
54
  val = serialized.get(k)
58
- serialized.pop(k, None)
59
-
60
- optional_nullable = k in optional_fields and k in nullable_fields
61
- is_set = (
62
- self.__pydantic_fields_set__.intersection({n})
63
- or k in null_default_fields
64
- ) # pylint: disable=no-member
65
-
66
- if val is not None and val != UNSET_SENTINEL:
67
- m[k] = val
68
- elif val != UNSET_SENTINEL and (
69
- not k in optional_fields or (optional_nullable and is_set)
70
- ):
71
- m[k] = val
55
+ is_nullable_and_explicitly_set = (
56
+ k in nullable_fields
57
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
58
+ )
59
+
60
+ if val != UNSET_SENTINEL:
61
+ if (
62
+ val is not None
63
+ or k not in optional_fields
64
+ or is_nullable_and_explicitly_set
65
+ ):
66
+ m[k] = val
72
67
 
73
68
  return m
@@ -28,30 +28,25 @@ class DirectoryMemberTestResponse(BaseModel):
28
28
 
29
29
  @model_serializer(mode="wrap")
30
30
  def serialize_model(self, handler):
31
- optional_fields = ["extension", "status"]
32
- nullable_fields = ["extension", "status"]
33
- null_default_fields = []
34
-
31
+ optional_fields = set(["extension", "status"])
32
+ nullable_fields = set(["extension", "status"])
35
33
  serialized = handler(self)
36
-
37
34
  m = {}
38
35
 
39
36
  for n, f in type(self).model_fields.items():
40
37
  k = f.alias or n
41
38
  val = serialized.get(k)
42
- serialized.pop(k, None)
43
-
44
- optional_nullable = k in optional_fields and k in nullable_fields
45
- is_set = (
46
- self.__pydantic_fields_set__.intersection({n})
47
- or k in null_default_fields
48
- ) # pylint: disable=no-member
49
-
50
- if val is not None and val != UNSET_SENTINEL:
51
- m[k] = val
52
- elif val != UNSET_SENTINEL and (
53
- not k in optional_fields or (optional_nullable and is_set)
54
- ):
55
- m[k] = val
39
+ is_nullable_and_explicitly_set = (
40
+ k in nullable_fields
41
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
42
+ )
43
+
44
+ if val != UNSET_SENTINEL:
45
+ if (
46
+ val is not None
47
+ or k not in optional_fields
48
+ or is_nullable_and_explicitly_set
49
+ ):
50
+ m[k] = val
56
51
 
57
52
  return m
@@ -49,30 +49,25 @@ class DirectoryMemberUpdate(BaseModel):
49
49
 
50
50
  @model_serializer(mode="wrap")
51
51
  def serialize_model(self, handler):
52
- optional_fields = ["extensions", "contact_tags"]
53
- nullable_fields = ["extensions", "contact_tags"]
54
- null_default_fields = []
55
-
52
+ optional_fields = set(["extensions", "contact_tags"])
53
+ nullable_fields = set(["extensions", "contact_tags"])
56
54
  serialized = handler(self)
57
-
58
55
  m = {}
59
56
 
60
57
  for n, f in type(self).model_fields.items():
61
58
  k = f.alias or n
62
59
  val = serialized.get(k)
63
- serialized.pop(k, None)
64
-
65
- optional_nullable = k in optional_fields and k in nullable_fields
66
- is_set = (
67
- self.__pydantic_fields_set__.intersection({n})
68
- or k in null_default_fields
69
- ) # pylint: disable=no-member
70
-
71
- if val is not None and val != UNSET_SENTINEL:
72
- m[k] = val
73
- elif val != UNSET_SENTINEL and (
74
- not k in optional_fields or (optional_nullable and is_set)
75
- ):
76
- m[k] = val
60
+ is_nullable_and_explicitly_set = (
61
+ k in nullable_fields
62
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
63
+ )
64
+
65
+ if val != UNSET_SENTINEL:
66
+ if (
67
+ val is not None
68
+ or k not in optional_fields
69
+ or is_nullable_and_explicitly_set
70
+ ):
71
+ m[k] = val
77
72
 
78
73
  return m
@@ -0,0 +1,19 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from syllable_sdk.types import BaseModel
5
+ from typing_extensions import TypedDict
6
+
7
+
8
+ class EmailConfigurationsTypedDict(TypedDict):
9
+ r"""Email channel configurations."""
10
+
11
+ sending_domain: str
12
+ r"""The domain to use for sending emails. Must be authenticated in SendGrid."""
13
+
14
+
15
+ class EmailConfigurations(BaseModel):
16
+ r"""Email channel configurations."""
17
+
18
+ sending_domain: str
19
+ r"""The domain to use for sending emails. Must be authenticated in SendGrid."""
@@ -81,50 +81,49 @@ class Event(BaseModel):
81
81
 
82
82
  @model_serializer(mode="wrap")
83
83
  def serialize_model(self, handler):
84
- optional_fields = [
85
- "session_id",
86
- "conversation_id",
87
- "source",
88
- "source_id",
89
- "category",
90
- "type",
91
- "user_id",
92
- "description",
93
- "attributes",
94
- ]
95
- nullable_fields = [
96
- "session_id",
97
- "conversation_id",
98
- "source",
99
- "source_id",
100
- "category",
101
- "type",
102
- "user_id",
103
- "description",
104
- "attributes",
105
- ]
106
- null_default_fields = []
107
-
84
+ optional_fields = set(
85
+ [
86
+ "session_id",
87
+ "conversation_id",
88
+ "source",
89
+ "source_id",
90
+ "category",
91
+ "type",
92
+ "user_id",
93
+ "description",
94
+ "attributes",
95
+ ]
96
+ )
97
+ nullable_fields = set(
98
+ [
99
+ "session_id",
100
+ "conversation_id",
101
+ "source",
102
+ "source_id",
103
+ "category",
104
+ "type",
105
+ "user_id",
106
+ "description",
107
+ "attributes",
108
+ ]
109
+ )
108
110
  serialized = handler(self)
109
-
110
111
  m = {}
111
112
 
112
113
  for n, f in type(self).model_fields.items():
113
114
  k = f.alias or n
114
115
  val = serialized.get(k)
115
- serialized.pop(k, None)
116
-
117
- optional_nullable = k in optional_fields and k in nullable_fields
118
- is_set = (
119
- self.__pydantic_fields_set__.intersection({n})
120
- or k in null_default_fields
121
- ) # pylint: disable=no-member
122
-
123
- if val is not None and val != UNSET_SENTINEL:
124
- m[k] = val
125
- elif val != UNSET_SENTINEL and (
126
- not k in optional_fields or (optional_nullable and is_set)
127
- ):
128
- m[k] = val
116
+ is_nullable_and_explicitly_set = (
117
+ k in nullable_fields
118
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
119
+ )
120
+
121
+ if val != UNSET_SENTINEL:
122
+ if (
123
+ val is not None
124
+ or k not in optional_fields
125
+ or is_nullable_and_explicitly_set
126
+ ):
127
+ m[k] = val
129
128
 
130
129
  return m
@@ -94,47 +94,46 @@ class EventsListRequest(BaseModel):
94
94
 
95
95
  @model_serializer(mode="wrap")
96
96
  def serialize_model(self, handler):
97
- optional_fields = [
98
- "page",
99
- "limit",
100
- "search_fields",
101
- "search_field_values",
102
- "order_by",
103
- "order_by_direction",
104
- "fields",
105
- "start_datetime",
106
- "end_datetime",
107
- ]
108
- nullable_fields = [
109
- "page",
110
- "order_by",
111
- "order_by_direction",
112
- "fields",
113
- "start_datetime",
114
- "end_datetime",
115
- ]
116
- null_default_fields = []
117
-
97
+ optional_fields = set(
98
+ [
99
+ "page",
100
+ "limit",
101
+ "search_fields",
102
+ "search_field_values",
103
+ "order_by",
104
+ "order_by_direction",
105
+ "fields",
106
+ "start_datetime",
107
+ "end_datetime",
108
+ ]
109
+ )
110
+ nullable_fields = set(
111
+ [
112
+ "page",
113
+ "order_by",
114
+ "order_by_direction",
115
+ "fields",
116
+ "start_datetime",
117
+ "end_datetime",
118
+ ]
119
+ )
118
120
  serialized = handler(self)
119
-
120
121
  m = {}
121
122
 
122
123
  for n, f in type(self).model_fields.items():
123
124
  k = f.alias or n
124
125
  val = serialized.get(k)
125
- serialized.pop(k, None)
126
-
127
- optional_nullable = k in optional_fields and k in nullable_fields
128
- is_set = (
129
- self.__pydantic_fields_set__.intersection({n})
130
- or k in null_default_fields
131
- ) # pylint: disable=no-member
132
-
133
- if val is not None and val != UNSET_SENTINEL:
134
- m[k] = val
135
- elif val != UNSET_SENTINEL and (
136
- not k in optional_fields or (optional_nullable and is_set)
137
- ):
138
- m[k] = val
126
+ is_nullable_and_explicitly_set = (
127
+ k in nullable_fields
128
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
129
+ )
130
+
131
+ if val != UNSET_SENTINEL:
132
+ if (
133
+ val is not None
134
+ or k not in optional_fields
135
+ or is_nullable_and_explicitly_set
136
+ ):
137
+ m[k] = val
139
138
 
140
139
  return m
@@ -60,39 +60,27 @@ class EventTask(BaseModel):
60
60
 
61
61
  @model_serializer(mode="wrap")
62
62
  def serialize_model(self, handler):
63
- optional_fields = [
64
- "id",
65
- "config",
66
- "variables",
67
- "metadata",
68
- "tool",
69
- "type",
70
- "version",
71
- "on",
72
- ]
73
- nullable_fields = ["id", "config", "variables", "metadata", "tool"]
74
- null_default_fields = []
75
-
63
+ optional_fields = set(
64
+ ["id", "config", "variables", "metadata", "tool", "type", "version", "on"]
65
+ )
66
+ nullable_fields = set(["id", "config", "variables", "metadata", "tool"])
76
67
  serialized = handler(self)
77
-
78
68
  m = {}
79
69
 
80
70
  for n, f in type(self).model_fields.items():
81
71
  k = f.alias or n
82
72
  val = serialized.get(k)
83
- serialized.pop(k, None)
84
-
85
- optional_nullable = k in optional_fields and k in nullable_fields
86
- is_set = (
87
- self.__pydantic_fields_set__.intersection({n})
88
- or k in null_default_fields
89
- ) # pylint: disable=no-member
90
-
91
- if val is not None and val != UNSET_SENTINEL:
92
- m[k] = val
93
- elif val != UNSET_SENTINEL and (
94
- not k in optional_fields or (optional_nullable and is_set)
95
- ):
96
- m[k] = val
73
+ is_nullable_and_explicitly_set = (
74
+ k in nullable_fields
75
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
76
+ )
77
+
78
+ if val != UNSET_SENTINEL:
79
+ if (
80
+ val is not None
81
+ or k not in optional_fields
82
+ or is_nullable_and_explicitly_set
83
+ ):
84
+ m[k] = val
97
85
 
98
86
  return m
@@ -51,30 +51,25 @@ class EventTaskEvents(BaseModel):
51
51
 
52
52
  @model_serializer(mode="wrap")
53
53
  def serialize_model(self, handler):
54
- optional_fields = ["start"]
55
- nullable_fields = ["start"]
56
- null_default_fields = []
57
-
54
+ optional_fields = set(["start"])
55
+ nullable_fields = set(["start"])
58
56
  serialized = handler(self)
59
-
60
57
  m = {}
61
58
 
62
59
  for n, f in type(self).model_fields.items():
63
60
  k = f.alias or n
64
61
  val = serialized.get(k)
65
- serialized.pop(k, None)
66
-
67
- optional_nullable = k in optional_fields and k in nullable_fields
68
- is_set = (
69
- self.__pydantic_fields_set__.intersection({n})
70
- or k in null_default_fields
71
- ) # pylint: disable=no-member
72
-
73
- if val is not None and val != UNSET_SENTINEL:
74
- m[k] = val
75
- elif val != UNSET_SENTINEL and (
76
- not k in optional_fields or (optional_nullable and is_set)
77
- ):
78
- m[k] = val
62
+ is_nullable_and_explicitly_set = (
63
+ k in nullable_fields
64
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
65
+ )
66
+
67
+ if val != UNSET_SENTINEL:
68
+ if (
69
+ val is not None
70
+ or k not in optional_fields
71
+ or is_nullable_and_explicitly_set
72
+ ):
73
+ m[k] = val
79
74
 
80
75
  return m