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
@@ -69,44 +69,43 @@ class OrganizationResponse(BaseModel):
69
69
 
70
70
  @model_serializer(mode="wrap")
71
71
  def serialize_model(self, handler):
72
- optional_fields = [
73
- "description",
74
- "domains",
75
- "saml_provider_id",
76
- "last_updated_comments",
77
- "last_updated_by",
78
- "logo_url",
79
- ]
80
- nullable_fields = [
81
- "description",
82
- "domains",
83
- "saml_provider_id",
84
- "last_updated_comments",
85
- "last_updated_by",
86
- "logo_url",
87
- ]
88
- null_default_fields = []
89
-
72
+ optional_fields = set(
73
+ [
74
+ "description",
75
+ "domains",
76
+ "saml_provider_id",
77
+ "last_updated_comments",
78
+ "last_updated_by",
79
+ "logo_url",
80
+ ]
81
+ )
82
+ nullable_fields = set(
83
+ [
84
+ "description",
85
+ "domains",
86
+ "saml_provider_id",
87
+ "last_updated_comments",
88
+ "last_updated_by",
89
+ "logo_url",
90
+ ]
91
+ )
90
92
  serialized = handler(self)
91
-
92
93
  m = {}
93
94
 
94
95
  for n, f in type(self).model_fields.items():
95
96
  k = f.alias or n
96
97
  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
98
+ is_nullable_and_explicitly_set = (
99
+ k in nullable_fields
100
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
101
+ )
102
+
103
+ if val != UNSET_SENTINEL:
104
+ if (
105
+ val is not None
106
+ or k not in optional_fields
107
+ or is_nullable_and_explicitly_set
108
+ ):
109
+ m[k] = val
111
110
 
112
111
  return m
@@ -94,47 +94,46 @@ class OutboundBatchListRequest(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
@@ -42,30 +42,25 @@ class OutboundBatchResultsRequest(BaseModel):
42
42
 
43
43
  @model_serializer(mode="wrap")
44
44
  def serialize_model(self, handler):
45
- optional_fields = ["reference_id", "status", "insights_status"]
46
- nullable_fields = ["reference_id", "status", "insights_status"]
47
- null_default_fields = []
48
-
45
+ optional_fields = set(["reference_id", "status", "insights_status"])
46
+ nullable_fields = set(["reference_id", "status", "insights_status"])
49
47
  serialized = handler(self)
50
-
51
48
  m = {}
52
49
 
53
50
  for n, f in type(self).model_fields.items():
54
51
  k = f.alias or n
55
52
  val = serialized.get(k)
56
- serialized.pop(k, None)
57
-
58
- optional_nullable = k in optional_fields and k in nullable_fields
59
- is_set = (
60
- self.__pydantic_fields_set__.intersection({n})
61
- or k in null_default_fields
62
- ) # pylint: disable=no-member
53
+ is_nullable_and_explicitly_set = (
54
+ k in nullable_fields
55
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
56
+ )
63
57
 
64
- if val is not None and val != UNSET_SENTINEL:
65
- m[k] = val
66
- elif val != UNSET_SENTINEL and (
67
- not k in optional_fields or (optional_nullable and is_set)
68
- ):
69
- m[k] = val
58
+ if val != UNSET_SENTINEL:
59
+ if (
60
+ val is not None
61
+ or k not in optional_fields
62
+ or is_nullable_and_explicitly_set
63
+ ):
64
+ m[k] = val
70
65
 
71
66
  return m
@@ -5,7 +5,8 @@ from .body_outbound_batch_upload import (
5
5
  BodyOutboundBatchUpload,
6
6
  BodyOutboundBatchUploadTypedDict,
7
7
  )
8
- from syllable_sdk.types import BaseModel
8
+ from pydantic import model_serializer
9
+ from syllable_sdk.types import BaseModel, UNSET_SENTINEL
9
10
  from syllable_sdk.utils import FieldMetadata, PathParamMetadata, RequestMetadata
10
11
  from typing import Optional
11
12
  from typing_extensions import Annotated, NotRequired, TypedDict
@@ -25,3 +26,19 @@ class OutboundBatchUploadRequest(BaseModel):
25
26
  Optional[BodyOutboundBatchUpload],
26
27
  FieldMetadata(request=RequestMetadata(media_type="multipart/form-data")),
27
28
  ] = None
29
+
30
+ @model_serializer(mode="wrap")
31
+ def serialize_model(self, handler):
32
+ optional_fields = set(["Body_outbound_batch_upload"])
33
+ serialized = handler(self)
34
+ m = {}
35
+
36
+ for n, f in type(self).model_fields.items():
37
+ k = f.alias or n
38
+ val = serialized.get(k)
39
+
40
+ if val != UNSET_SENTINEL:
41
+ if val is not None or k not in optional_fields:
42
+ m[k] = val
43
+
44
+ return m
@@ -94,47 +94,46 @@ class OutboundCampaignListRequest(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
@@ -132,59 +132,58 @@ class OutboundCampaign(BaseModel):
132
132
 
133
133
  @model_serializer(mode="wrap")
134
134
  def serialize_model(self, handler):
135
- optional_fields = [
136
- "description",
137
- "mode",
138
- "sms_session_ttl",
139
- "label",
140
- "labels",
141
- "daily_start_time",
142
- "daily_end_time",
143
- "source",
144
- "hourly_rate",
145
- "retry_count",
146
- "retry_interval",
147
- "voicemail_detection",
148
- "agent_id",
149
- "created_at",
150
- "updated_at",
151
- ]
152
- nullable_fields = [
153
- "description",
154
- "mode",
155
- "sms_session_ttl",
156
- "label",
157
- "labels",
158
- "daily_start_time",
159
- "daily_end_time",
160
- "source",
161
- "caller_id",
162
- "retry_interval",
163
- "voicemail_detection",
164
- "agent_id",
165
- ]
166
- null_default_fields = []
167
-
135
+ optional_fields = set(
136
+ [
137
+ "description",
138
+ "mode",
139
+ "sms_session_ttl",
140
+ "label",
141
+ "labels",
142
+ "daily_start_time",
143
+ "daily_end_time",
144
+ "source",
145
+ "hourly_rate",
146
+ "retry_count",
147
+ "retry_interval",
148
+ "voicemail_detection",
149
+ "agent_id",
150
+ "created_at",
151
+ "updated_at",
152
+ ]
153
+ )
154
+ nullable_fields = set(
155
+ [
156
+ "description",
157
+ "mode",
158
+ "sms_session_ttl",
159
+ "label",
160
+ "labels",
161
+ "daily_start_time",
162
+ "daily_end_time",
163
+ "source",
164
+ "caller_id",
165
+ "retry_interval",
166
+ "voicemail_detection",
167
+ "agent_id",
168
+ ]
169
+ )
168
170
  serialized = handler(self)
169
-
170
171
  m = {}
171
172
 
172
173
  for n, f in type(self).model_fields.items():
173
174
  k = f.alias or n
174
175
  val = serialized.get(k)
175
- serialized.pop(k, None)
176
-
177
- optional_nullable = k in optional_fields and k in nullable_fields
178
- is_set = (
179
- self.__pydantic_fields_set__.intersection({n})
180
- or k in null_default_fields
181
- ) # pylint: disable=no-member
182
-
183
- if val is not None and val != UNSET_SENTINEL:
184
- m[k] = val
185
- elif val != UNSET_SENTINEL and (
186
- not k in optional_fields or (optional_nullable and is_set)
187
- ):
188
- m[k] = val
176
+ is_nullable_and_explicitly_set = (
177
+ k in nullable_fields
178
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
179
+ )
180
+
181
+ if val != UNSET_SENTINEL:
182
+ if (
183
+ val is not None
184
+ or k not in optional_fields
185
+ or is_nullable_and_explicitly_set
186
+ ):
187
+ m[k] = val
189
188
 
190
189
  return m
@@ -106,55 +106,54 @@ class OutboundCampaignInput(BaseModel):
106
106
 
107
107
  @model_serializer(mode="wrap")
108
108
  def serialize_model(self, handler):
109
- optional_fields = [
110
- "description",
111
- "mode",
112
- "sms_session_ttl",
113
- "label",
114
- "labels",
115
- "daily_start_time",
116
- "daily_end_time",
117
- "source",
118
- "hourly_rate",
119
- "retry_count",
120
- "retry_interval",
121
- "voicemail_detection",
122
- ]
123
- nullable_fields = [
124
- "description",
125
- "mode",
126
- "sms_session_ttl",
127
- "label",
128
- "labels",
129
- "daily_start_time",
130
- "daily_end_time",
131
- "source",
132
- "caller_id",
133
- "retry_interval",
134
- "voicemail_detection",
135
- ]
136
- null_default_fields = []
137
-
109
+ optional_fields = set(
110
+ [
111
+ "description",
112
+ "mode",
113
+ "sms_session_ttl",
114
+ "label",
115
+ "labels",
116
+ "daily_start_time",
117
+ "daily_end_time",
118
+ "source",
119
+ "hourly_rate",
120
+ "retry_count",
121
+ "retry_interval",
122
+ "voicemail_detection",
123
+ ]
124
+ )
125
+ nullable_fields = set(
126
+ [
127
+ "description",
128
+ "mode",
129
+ "sms_session_ttl",
130
+ "label",
131
+ "labels",
132
+ "daily_start_time",
133
+ "daily_end_time",
134
+ "source",
135
+ "caller_id",
136
+ "retry_interval",
137
+ "voicemail_detection",
138
+ ]
139
+ )
138
140
  serialized = handler(self)
139
-
140
141
  m = {}
141
142
 
142
143
  for n, f in type(self).model_fields.items():
143
144
  k = f.alias or n
144
145
  val = serialized.get(k)
145
- serialized.pop(k, None)
146
-
147
- optional_nullable = k in optional_fields and k in nullable_fields
148
- is_set = (
149
- self.__pydantic_fields_set__.intersection({n})
150
- or k in null_default_fields
151
- ) # pylint: disable=no-member
152
-
153
- if val is not None and val != UNSET_SENTINEL:
154
- m[k] = val
155
- elif val != UNSET_SENTINEL and (
156
- not k in optional_fields or (optional_nullable and is_set)
157
- ):
158
- m[k] = val
146
+ is_nullable_and_explicitly_set = (
147
+ k in nullable_fields
148
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
149
+ )
150
+
151
+ if val != UNSET_SENTINEL:
152
+ if (
153
+ val is not None
154
+ or k not in optional_fields
155
+ or is_nullable_and_explicitly_set
156
+ ):
157
+ m[k] = val
159
158
 
160
159
  return m
@@ -37,30 +37,25 @@ class PermissionResponse(BaseModel):
37
37
 
38
38
  @model_serializer(mode="wrap")
39
39
  def serialize_model(self, handler):
40
- optional_fields = ["description"]
41
- nullable_fields = ["description"]
42
- null_default_fields = []
43
-
40
+ optional_fields = set(["description"])
41
+ nullable_fields = set(["description"])
44
42
  serialized = handler(self)
45
-
46
43
  m = {}
47
44
 
48
45
  for n, f in type(self).model_fields.items():
49
46
  k = f.alias or n
50
47
  val = serialized.get(k)
51
- serialized.pop(k, None)
52
-
53
- optional_nullable = k in optional_fields and k in nullable_fields
54
- is_set = (
55
- self.__pydantic_fields_set__.intersection({n})
56
- or k in null_default_fields
57
- ) # pylint: disable=no-member
58
-
59
- if val is not None and val != UNSET_SENTINEL:
60
- m[k] = val
61
- elif val != UNSET_SENTINEL and (
62
- not k in optional_fields or (optional_nullable and is_set)
63
- ):
64
- m[k] = val
48
+ is_nullable_and_explicitly_set = (
49
+ k in nullable_fields
50
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
51
+ )
52
+
53
+ if val != UNSET_SENTINEL:
54
+ if (
55
+ val is not None
56
+ or k not in optional_fields
57
+ or is_nullable_and_explicitly_set
58
+ ):
59
+ m[k] = val
65
60
 
66
61
  return m