syllable-sdk 0.44.20__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 (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 +13 -1
  212. {syllable_sdk-0.44.20.dist-info → syllable_sdk-0.44.24.dist-info}/METADATA +1 -1
  213. {syllable_sdk-0.44.20.dist-info → syllable_sdk-0.44.24.dist-info}/RECORD +214 -213
  214. {syllable_sdk-0.44.20.dist-info → syllable_sdk-0.44.24.dist-info}/WHEEL +0 -0
@@ -59,30 +59,25 @@ class CustomMessageUpdateRequest(BaseModel):
59
59
 
60
60
  @model_serializer(mode="wrap")
61
61
  def serialize_model(self, handler):
62
- optional_fields = ["preamble", "label", "rules", "type"]
63
- nullable_fields = ["preamble", "label"]
64
- null_default_fields = []
65
-
62
+ optional_fields = set(["preamble", "label", "rules", "type"])
63
+ nullable_fields = set(["preamble", "label"])
66
64
  serialized = handler(self)
67
-
68
65
  m = {}
69
66
 
70
67
  for n, f in type(self).model_fields.items():
71
68
  k = f.alias or n
72
69
  val = serialized.get(k)
73
- serialized.pop(k, None)
74
-
75
- optional_nullable = k in optional_fields and k in nullable_fields
76
- is_set = (
77
- self.__pydantic_fields_set__.intersection({n})
78
- or k in null_default_fields
79
- ) # pylint: disable=no-member
80
-
81
- if val is not None and val != UNSET_SENTINEL:
82
- m[k] = val
83
- elif val != UNSET_SENTINEL and (
84
- not k in optional_fields or (optional_nullable and is_set)
85
- ):
86
- m[k] = val
70
+ is_nullable_and_explicitly_set = (
71
+ k in nullable_fields
72
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
73
+ )
74
+
75
+ if val != UNSET_SENTINEL:
76
+ if (
77
+ val is not None
78
+ or k not in optional_fields
79
+ or is_nullable_and_explicitly_set
80
+ ):
81
+ m[k] = val
87
82
 
88
83
  return m
@@ -73,40 +73,29 @@ class DaoToolResponse(BaseModel):
73
73
 
74
74
  @model_serializer(mode="wrap")
75
75
  def serialize_model(self, handler):
76
- optional_fields = [
77
- "last_updated_comments",
78
- "service_name",
79
- "prompts_info",
80
- "agents_info",
81
- ]
82
- nullable_fields = [
83
- "last_updated_comments",
84
- "service_name",
85
- "prompts_info",
86
- "agents_info",
87
- ]
88
- null_default_fields = []
89
-
76
+ optional_fields = set(
77
+ ["last_updated_comments", "service_name", "prompts_info", "agents_info"]
78
+ )
79
+ nullable_fields = set(
80
+ ["last_updated_comments", "service_name", "prompts_info", "agents_info"]
81
+ )
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
@@ -94,47 +94,46 @@ class DataSourcesListRequest(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
@@ -53,30 +53,25 @@ class DataSourceCreateRequest(BaseModel):
53
53
 
54
54
  @model_serializer(mode="wrap")
55
55
  def serialize_model(self, handler):
56
- optional_fields = ["description", "labels", "chunk_delimiter"]
57
- nullable_fields = ["description", "chunk_delimiter"]
58
- null_default_fields = []
59
-
56
+ optional_fields = set(["description", "labels", "chunk_delimiter"])
57
+ nullable_fields = set(["description", "chunk_delimiter"])
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
@@ -82,35 +82,29 @@ class DataSourceDetailResponse(BaseModel):
82
82
 
83
83
  @model_serializer(mode="wrap")
84
84
  def serialize_model(self, handler):
85
- optional_fields = ["description", "labels", "chunk_delimiter", "edit_comments"]
86
- nullable_fields = [
87
- "description",
88
- "chunk_delimiter",
89
- "edit_comments",
90
- "last_updated_by",
91
- ]
92
- null_default_fields = []
93
-
85
+ optional_fields = set(
86
+ ["description", "labels", "chunk_delimiter", "edit_comments"]
87
+ )
88
+ nullable_fields = set(
89
+ ["description", "chunk_delimiter", "edit_comments", "last_updated_by"]
90
+ )
94
91
  serialized = handler(self)
95
-
96
92
  m = {}
97
93
 
98
94
  for n, f in type(self).model_fields.items():
99
95
  k = f.alias or n
100
96
  val = serialized.get(k)
101
- serialized.pop(k, None)
102
-
103
- optional_nullable = k in optional_fields and k in nullable_fields
104
- is_set = (
105
- self.__pydantic_fields_set__.intersection({n})
106
- or k in null_default_fields
107
- ) # pylint: disable=no-member
108
-
109
- if val is not None and val != UNSET_SENTINEL:
110
- m[k] = val
111
- elif val != UNSET_SENTINEL and (
112
- not k in optional_fields or (optional_nullable and is_set)
113
- ):
114
- m[k] = val
97
+ is_nullable_and_explicitly_set = (
98
+ k in nullable_fields
99
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
100
+ )
101
+
102
+ if val != UNSET_SENTINEL:
103
+ if (
104
+ val is not None
105
+ or k not in optional_fields
106
+ or is_nullable_and_explicitly_set
107
+ ):
108
+ m[k] = val
115
109
 
116
110
  return m
@@ -77,35 +77,29 @@ class DataSourceMetadataResponse(BaseModel):
77
77
 
78
78
  @model_serializer(mode="wrap")
79
79
  def serialize_model(self, handler):
80
- optional_fields = ["description", "labels", "chunk_delimiter", "edit_comments"]
81
- nullable_fields = [
82
- "description",
83
- "chunk_delimiter",
84
- "edit_comments",
85
- "last_updated_by",
86
- ]
87
- null_default_fields = []
88
-
80
+ optional_fields = set(
81
+ ["description", "labels", "chunk_delimiter", "edit_comments"]
82
+ )
83
+ nullable_fields = set(
84
+ ["description", "chunk_delimiter", "edit_comments", "last_updated_by"]
85
+ )
89
86
  serialized = handler(self)
90
-
91
87
  m = {}
92
88
 
93
89
  for n, f in type(self).model_fields.items():
94
90
  k = f.alias or n
95
91
  val = serialized.get(k)
96
- serialized.pop(k, None)
97
-
98
- optional_nullable = k in optional_fields and k in nullable_fields
99
- is_set = (
100
- self.__pydantic_fields_set__.intersection({n})
101
- or k in null_default_fields
102
- ) # pylint: disable=no-member
103
-
104
- if val is not None and val != UNSET_SENTINEL:
105
- m[k] = val
106
- elif val != UNSET_SENTINEL and (
107
- not k in optional_fields or (optional_nullable and is_set)
108
- ):
109
- m[k] = val
92
+ is_nullable_and_explicitly_set = (
93
+ k in nullable_fields
94
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
95
+ )
96
+
97
+ if val != UNSET_SENTINEL:
98
+ if (
99
+ val is not None
100
+ or k not in optional_fields
101
+ or is_nullable_and_explicitly_set
102
+ ):
103
+ m[k] = val
110
104
 
111
105
  return m
@@ -63,30 +63,27 @@ class DataSourceUpdateRequest(BaseModel):
63
63
 
64
64
  @model_serializer(mode="wrap")
65
65
  def serialize_model(self, handler):
66
- optional_fields = ["description", "labels", "chunk_delimiter", "edit_comments"]
67
- nullable_fields = ["description", "chunk_delimiter", "edit_comments"]
68
- null_default_fields = []
69
-
66
+ optional_fields = set(
67
+ ["description", "labels", "chunk_delimiter", "edit_comments"]
68
+ )
69
+ nullable_fields = set(["description", "chunk_delimiter", "edit_comments"])
70
70
  serialized = handler(self)
71
-
72
71
  m = {}
73
72
 
74
73
  for n, f in type(self).model_fields.items():
75
74
  k = f.alias or n
76
75
  val = serialized.get(k)
77
- serialized.pop(k, None)
78
-
79
- optional_nullable = k in optional_fields and k in nullable_fields
80
- is_set = (
81
- self.__pydantic_fields_set__.intersection({n})
82
- or k in null_default_fields
83
- ) # pylint: disable=no-member
84
-
85
- if val is not None and val != UNSET_SENTINEL:
86
- m[k] = val
87
- elif val != UNSET_SENTINEL and (
88
- not k in optional_fields or (optional_nullable and is_set)
89
- ):
90
- m[k] = val
76
+ is_nullable_and_explicitly_set = (
77
+ k in nullable_fields
78
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
79
+ )
80
+
81
+ if val != UNSET_SENTINEL:
82
+ if (
83
+ val is not None
84
+ or k not in optional_fields
85
+ or is_nullable_and_explicitly_set
86
+ ):
87
+ m[k] = val
91
88
 
92
89
  return m
@@ -39,30 +39,14 @@ class DialogToolCall(BaseModel):
39
39
 
40
40
  @model_serializer(mode="wrap")
41
41
  def serialize_model(self, handler):
42
- optional_fields = []
43
- nullable_fields = ["tool_result"]
44
- null_default_fields = []
45
-
46
42
  serialized = handler(self)
47
-
48
43
  m = {}
49
44
 
50
45
  for n, f in type(self).model_fields.items():
51
46
  k = f.alias or n
52
47
  val = serialized.get(k)
53
- serialized.pop(k, None)
54
48
 
55
- optional_nullable = k in optional_fields and k in nullable_fields
56
- is_set = (
57
- self.__pydantic_fields_set__.intersection({n})
58
- or k in null_default_fields
59
- ) # pylint: disable=no-member
60
-
61
- if val is not None and val != UNSET_SENTINEL:
62
- m[k] = val
63
- elif val != UNSET_SENTINEL and (
64
- not k in optional_fields or (optional_nullable and is_set)
65
- ):
49
+ if val != UNSET_SENTINEL:
66
50
  m[k] = val
67
51
 
68
52
  return m
@@ -1,7 +1,8 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from syllable_sdk.types import BaseModel
4
+ from pydantic import model_serializer
5
+ from syllable_sdk.types import BaseModel, UNSET_SENTINEL
5
6
  from typing import Optional
6
7
  from typing_extensions import NotRequired, TypedDict
7
8
 
@@ -22,3 +23,19 @@ class DictionaryMetadata(BaseModel):
22
23
  hash: str
23
24
 
24
25
  source: Optional[str] = ""
26
+
27
+ @model_serializer(mode="wrap")
28
+ def serialize_model(self, handler):
29
+ optional_fields = set(["source"])
30
+ serialized = handler(self)
31
+ m = {}
32
+
33
+ for n, f in type(self).model_fields.items():
34
+ k = f.alias or n
35
+ val = serialized.get(k)
36
+
37
+ if val != UNSET_SENTINEL:
38
+ if val is not None or k not in optional_fields:
39
+ m[k] = val
40
+
41
+ return m
@@ -3,7 +3,8 @@
3
3
  from __future__ import annotations
4
4
  from .directorymembercreate import DirectoryMemberCreate, DirectoryMemberCreateTypedDict
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 FieldMetadata, QueryParamMetadata, RequestMetadata
8
9
  from typing import Optional
9
10
  from typing_extensions import Annotated, NotRequired, TypedDict
@@ -26,3 +27,19 @@ class DirectoryMemberCreateRequest(BaseModel):
26
27
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
27
28
  ] = None
28
29
  r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
30
+
31
+ @model_serializer(mode="wrap")
32
+ def serialize_model(self, handler):
33
+ optional_fields = set(["response_format"])
34
+ serialized = handler(self)
35
+ m = {}
36
+
37
+ for n, f in type(self).model_fields.items():
38
+ k = f.alias or n
39
+ val = serialized.get(k)
40
+
41
+ if val != UNSET_SENTINEL:
42
+ if val is not None or k not in optional_fields:
43
+ m[k] = val
44
+
45
+ return m
@@ -2,7 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from .directoryresponseformat import DirectoryResponseFormat
5
- from syllable_sdk.types import BaseModel
5
+ from pydantic import model_serializer
6
+ from syllable_sdk.types import BaseModel, UNSET_SENTINEL
6
7
  from syllable_sdk.utils import FieldMetadata, QueryParamMetadata
7
8
  from typing import Optional
8
9
  from typing_extensions import Annotated, NotRequired, TypedDict
@@ -19,3 +20,19 @@ class DirectoryMemberDownloadRequest(BaseModel):
19
20
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
20
21
  ] = None
21
22
  r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
23
+
24
+ @model_serializer(mode="wrap")
25
+ def serialize_model(self, handler):
26
+ optional_fields = set(["response_format"])
27
+ serialized = handler(self)
28
+ m = {}
29
+
30
+ for n, f in type(self).model_fields.items():
31
+ k = f.alias or n
32
+ val = serialized.get(k)
33
+
34
+ if val != UNSET_SENTINEL:
35
+ if val is not None or k not in optional_fields:
36
+ m[k] = val
37
+
38
+ return m
@@ -2,7 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from .directoryresponseformat import DirectoryResponseFormat
5
- from syllable_sdk.types import BaseModel
5
+ from pydantic import model_serializer
6
+ from syllable_sdk.types import BaseModel, UNSET_SENTINEL
6
7
  from syllable_sdk.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata
7
8
  from typing import Optional
8
9
  from typing_extensions import Annotated, NotRequired, TypedDict
@@ -24,3 +25,19 @@ class DirectoryMemberGetByIDRequest(BaseModel):
24
25
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
25
26
  ] = None
26
27
  r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
28
+
29
+ @model_serializer(mode="wrap")
30
+ def serialize_model(self, handler):
31
+ optional_fields = set(["response_format"])
32
+ serialized = handler(self)
33
+ m = {}
34
+
35
+ for n, f in type(self).model_fields.items():
36
+ k = f.alias or n
37
+ val = serialized.get(k)
38
+
39
+ if val != UNSET_SENTINEL:
40
+ if val is not None or k not in optional_fields:
41
+ m[k] = val
42
+
43
+ return m
@@ -103,48 +103,47 @@ class DirectoryMemberListRequest(BaseModel):
103
103
 
104
104
  @model_serializer(mode="wrap")
105
105
  def serialize_model(self, handler):
106
- optional_fields = [
107
- "response_format",
108
- "page",
109
- "limit",
110
- "search_fields",
111
- "search_field_values",
112
- "order_by",
113
- "order_by_direction",
114
- "fields",
115
- "start_datetime",
116
- "end_datetime",
117
- ]
118
- nullable_fields = [
119
- "page",
120
- "order_by",
121
- "order_by_direction",
122
- "fields",
123
- "start_datetime",
124
- "end_datetime",
125
- ]
126
- null_default_fields = []
127
-
106
+ optional_fields = set(
107
+ [
108
+ "response_format",
109
+ "page",
110
+ "limit",
111
+ "search_fields",
112
+ "search_field_values",
113
+ "order_by",
114
+ "order_by_direction",
115
+ "fields",
116
+ "start_datetime",
117
+ "end_datetime",
118
+ ]
119
+ )
120
+ nullable_fields = set(
121
+ [
122
+ "page",
123
+ "order_by",
124
+ "order_by_direction",
125
+ "fields",
126
+ "start_datetime",
127
+ "end_datetime",
128
+ ]
129
+ )
128
130
  serialized = handler(self)
129
-
130
131
  m = {}
131
132
 
132
133
  for n, f in type(self).model_fields.items():
133
134
  k = f.alias or n
134
135
  val = serialized.get(k)
135
- serialized.pop(k, None)
136
-
137
- optional_nullable = k in optional_fields and k in nullable_fields
138
- is_set = (
139
- self.__pydantic_fields_set__.intersection({n})
140
- or k in null_default_fields
141
- ) # pylint: disable=no-member
142
-
143
- if val is not None and val != UNSET_SENTINEL:
144
- m[k] = val
145
- elif val != UNSET_SENTINEL and (
146
- not k in optional_fields or (optional_nullable and is_set)
147
- ):
148
- m[k] = val
136
+ is_nullable_and_explicitly_set = (
137
+ k in nullable_fields
138
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
139
+ )
140
+
141
+ if val != UNSET_SENTINEL:
142
+ if (
143
+ val is not None
144
+ or k not in optional_fields
145
+ or is_nullable_and_explicitly_set
146
+ ):
147
+ m[k] = val
149
148
 
150
149
  return m