syllable-sdk 0.40.0__py3-none-any.whl → 0.41.1__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.
syllable_sdk/_version.py CHANGED
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "syllable-sdk"
6
- __version__: str = "0.40.0"
6
+ __version__: str = "0.41.1"
7
7
  __openapi_doc_version__: str = "0.0.2"
8
- __gen_version__: str = "2.730.0"
9
- __user_agent__: str = "speakeasy-sdk/python 0.40.0 2.730.0 0.0.2 syllable-sdk"
8
+ __gen_version__: str = "2.739.1"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.41.1 2.739.1 0.0.2 syllable-sdk"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
syllable_sdk/directory.py CHANGED
@@ -1,6 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from .basesdk import BaseSDK
4
+ from datetime import datetime
4
5
  from syllable_sdk import errors, models, utils
5
6
  from syllable_sdk._hooks import HookContext
6
7
  from syllable_sdk.types import BaseModel, OptionalNullable, UNSET
@@ -608,8 +609,8 @@ class Directory(BaseSDK):
608
609
  self,
609
610
  *,
610
611
  member_id: int,
611
- directory_member: Union[
612
- models.DirectoryMember, models.DirectoryMemberTypedDict
612
+ directory_member_update: Union[
613
+ models.DirectoryMemberUpdate, models.DirectoryMemberUpdateTypedDict
613
614
  ],
614
615
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
615
616
  server_url: Optional[str] = None,
@@ -621,7 +622,7 @@ class Directory(BaseSDK):
621
622
  Update a DirectoryMember.
622
623
 
623
624
  :param member_id:
624
- :param directory_member:
625
+ :param directory_member_update:
625
626
  :param retries: Override the default retry configuration for this method
626
627
  :param server_url: Override the default server URL for this method
627
628
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -639,8 +640,8 @@ class Directory(BaseSDK):
639
640
 
640
641
  request = models.DirectoryMemberUpdateRequest(
641
642
  member_id=member_id,
642
- directory_member=utils.get_pydantic_model(
643
- directory_member, models.DirectoryMember
643
+ directory_member_update=utils.get_pydantic_model(
644
+ directory_member_update, models.DirectoryMemberUpdate
644
645
  ),
645
646
  )
646
647
 
@@ -658,7 +659,11 @@ class Directory(BaseSDK):
658
659
  http_headers=http_headers,
659
660
  security=self.sdk_configuration.security,
660
661
  get_serialized_body=lambda: utils.serialize_request_body(
661
- request.directory_member, False, False, "json", models.DirectoryMember
662
+ request.directory_member_update,
663
+ False,
664
+ False,
665
+ "json",
666
+ models.DirectoryMemberUpdate,
662
667
  ),
663
668
  timeout_ms=timeout_ms,
664
669
  )
@@ -707,8 +712,8 @@ class Directory(BaseSDK):
707
712
  self,
708
713
  *,
709
714
  member_id: int,
710
- directory_member: Union[
711
- models.DirectoryMember, models.DirectoryMemberTypedDict
715
+ directory_member_update: Union[
716
+ models.DirectoryMemberUpdate, models.DirectoryMemberUpdateTypedDict
712
717
  ],
713
718
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
714
719
  server_url: Optional[str] = None,
@@ -720,7 +725,7 @@ class Directory(BaseSDK):
720
725
  Update a DirectoryMember.
721
726
 
722
727
  :param member_id:
723
- :param directory_member:
728
+ :param directory_member_update:
724
729
  :param retries: Override the default retry configuration for this method
725
730
  :param server_url: Override the default server URL for this method
726
731
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -738,8 +743,8 @@ class Directory(BaseSDK):
738
743
 
739
744
  request = models.DirectoryMemberUpdateRequest(
740
745
  member_id=member_id,
741
- directory_member=utils.get_pydantic_model(
742
- directory_member, models.DirectoryMember
746
+ directory_member_update=utils.get_pydantic_model(
747
+ directory_member_update, models.DirectoryMemberUpdate
743
748
  ),
744
749
  )
745
750
 
@@ -757,7 +762,11 @@ class Directory(BaseSDK):
757
762
  http_headers=http_headers,
758
763
  security=self.sdk_configuration.security,
759
764
  get_serialized_body=lambda: utils.serialize_request_body(
760
- request.directory_member, False, False, "json", models.DirectoryMember
765
+ request.directory_member_update,
766
+ False,
767
+ False,
768
+ "json",
769
+ models.DirectoryMemberUpdate,
761
770
  ),
762
771
  timeout_ms=timeout_ms,
763
772
  )
@@ -980,6 +989,196 @@ class Directory(BaseSDK):
980
989
 
981
990
  raise errors.APIError("Unexpected response received", http_res)
982
991
 
992
+ def directory_member_test_extension(
993
+ self,
994
+ *,
995
+ member_id: int,
996
+ timestamp: datetime,
997
+ language_code: OptionalNullable[models.LanguageCode] = UNSET,
998
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
999
+ server_url: Optional[str] = None,
1000
+ timeout_ms: Optional[int] = None,
1001
+ http_headers: Optional[Mapping[str, str]] = None,
1002
+ ) -> models.DirectoryMemberTestResponse:
1003
+ r"""Test Directory Member Extension
1004
+
1005
+ Test directory member extension at a specific timestamp and language.
1006
+
1007
+ :param member_id:
1008
+ :param timestamp: Timestamp for test
1009
+ :param language_code: Optional language code for test
1010
+ :param retries: Override the default retry configuration for this method
1011
+ :param server_url: Override the default server URL for this method
1012
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1013
+ :param http_headers: Additional headers to set or replace on requests.
1014
+ """
1015
+ base_url = None
1016
+ url_variables = None
1017
+ if timeout_ms is None:
1018
+ timeout_ms = self.sdk_configuration.timeout_ms
1019
+
1020
+ if server_url is not None:
1021
+ base_url = server_url
1022
+ else:
1023
+ base_url = self._get_url(base_url, url_variables)
1024
+
1025
+ request = models.DirectoryMemberTestExtensionRequest(
1026
+ member_id=member_id,
1027
+ timestamp=timestamp,
1028
+ language_code=language_code,
1029
+ )
1030
+
1031
+ req = self._build_request(
1032
+ method="GET",
1033
+ path="/api/v1/directory_members/{member_id}/test",
1034
+ base_url=base_url,
1035
+ url_variables=url_variables,
1036
+ request=request,
1037
+ request_body_required=False,
1038
+ request_has_path_params=True,
1039
+ request_has_query_params=True,
1040
+ user_agent_header="user-agent",
1041
+ accept_header_value="application/json",
1042
+ http_headers=http_headers,
1043
+ security=self.sdk_configuration.security,
1044
+ timeout_ms=timeout_ms,
1045
+ )
1046
+
1047
+ if retries == UNSET:
1048
+ if self.sdk_configuration.retry_config is not UNSET:
1049
+ retries = self.sdk_configuration.retry_config
1050
+
1051
+ retry_config = None
1052
+ if isinstance(retries, utils.RetryConfig):
1053
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1054
+
1055
+ http_res = self.do_request(
1056
+ hook_ctx=HookContext(
1057
+ config=self.sdk_configuration,
1058
+ base_url=base_url or "",
1059
+ operation_id="directory_member_test_extension",
1060
+ oauth2_scopes=None,
1061
+ security_source=get_security_from_env(
1062
+ self.sdk_configuration.security, models.Security
1063
+ ),
1064
+ ),
1065
+ request=req,
1066
+ error_status_codes=["422", "4XX", "5XX"],
1067
+ retry_config=retry_config,
1068
+ )
1069
+
1070
+ response_data: Any = None
1071
+ if utils.match_response(http_res, "200", "application/json"):
1072
+ return unmarshal_json_response(models.DirectoryMemberTestResponse, http_res)
1073
+ if utils.match_response(http_res, "422", "application/json"):
1074
+ response_data = unmarshal_json_response(
1075
+ errors.HTTPValidationErrorData, http_res
1076
+ )
1077
+ raise errors.HTTPValidationError(response_data, http_res)
1078
+ if utils.match_response(http_res, "4XX", "*"):
1079
+ http_res_text = utils.stream_to_text(http_res)
1080
+ raise errors.APIError("API error occurred", http_res, http_res_text)
1081
+ if utils.match_response(http_res, "5XX", "*"):
1082
+ http_res_text = utils.stream_to_text(http_res)
1083
+ raise errors.APIError("API error occurred", http_res, http_res_text)
1084
+
1085
+ raise errors.APIError("Unexpected response received", http_res)
1086
+
1087
+ async def directory_member_test_extension_async(
1088
+ self,
1089
+ *,
1090
+ member_id: int,
1091
+ timestamp: datetime,
1092
+ language_code: OptionalNullable[models.LanguageCode] = UNSET,
1093
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1094
+ server_url: Optional[str] = None,
1095
+ timeout_ms: Optional[int] = None,
1096
+ http_headers: Optional[Mapping[str, str]] = None,
1097
+ ) -> models.DirectoryMemberTestResponse:
1098
+ r"""Test Directory Member Extension
1099
+
1100
+ Test directory member extension at a specific timestamp and language.
1101
+
1102
+ :param member_id:
1103
+ :param timestamp: Timestamp for test
1104
+ :param language_code: Optional language code for test
1105
+ :param retries: Override the default retry configuration for this method
1106
+ :param server_url: Override the default server URL for this method
1107
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1108
+ :param http_headers: Additional headers to set or replace on requests.
1109
+ """
1110
+ base_url = None
1111
+ url_variables = None
1112
+ if timeout_ms is None:
1113
+ timeout_ms = self.sdk_configuration.timeout_ms
1114
+
1115
+ if server_url is not None:
1116
+ base_url = server_url
1117
+ else:
1118
+ base_url = self._get_url(base_url, url_variables)
1119
+
1120
+ request = models.DirectoryMemberTestExtensionRequest(
1121
+ member_id=member_id,
1122
+ timestamp=timestamp,
1123
+ language_code=language_code,
1124
+ )
1125
+
1126
+ req = self._build_request_async(
1127
+ method="GET",
1128
+ path="/api/v1/directory_members/{member_id}/test",
1129
+ base_url=base_url,
1130
+ url_variables=url_variables,
1131
+ request=request,
1132
+ request_body_required=False,
1133
+ request_has_path_params=True,
1134
+ request_has_query_params=True,
1135
+ user_agent_header="user-agent",
1136
+ accept_header_value="application/json",
1137
+ http_headers=http_headers,
1138
+ security=self.sdk_configuration.security,
1139
+ timeout_ms=timeout_ms,
1140
+ )
1141
+
1142
+ if retries == UNSET:
1143
+ if self.sdk_configuration.retry_config is not UNSET:
1144
+ retries = self.sdk_configuration.retry_config
1145
+
1146
+ retry_config = None
1147
+ if isinstance(retries, utils.RetryConfig):
1148
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1149
+
1150
+ http_res = await self.do_request_async(
1151
+ hook_ctx=HookContext(
1152
+ config=self.sdk_configuration,
1153
+ base_url=base_url or "",
1154
+ operation_id="directory_member_test_extension",
1155
+ oauth2_scopes=None,
1156
+ security_source=get_security_from_env(
1157
+ self.sdk_configuration.security, models.Security
1158
+ ),
1159
+ ),
1160
+ request=req,
1161
+ error_status_codes=["422", "4XX", "5XX"],
1162
+ retry_config=retry_config,
1163
+ )
1164
+
1165
+ response_data: Any = None
1166
+ if utils.match_response(http_res, "200", "application/json"):
1167
+ return unmarshal_json_response(models.DirectoryMemberTestResponse, http_res)
1168
+ if utils.match_response(http_res, "422", "application/json"):
1169
+ response_data = unmarshal_json_response(
1170
+ errors.HTTPValidationErrorData, http_res
1171
+ )
1172
+ raise errors.HTTPValidationError(response_data, http_res)
1173
+ if utils.match_response(http_res, "4XX", "*"):
1174
+ http_res_text = await utils.stream_to_text_async(http_res)
1175
+ raise errors.APIError("API error occurred", http_res, http_res_text)
1176
+ if utils.match_response(http_res, "5XX", "*"):
1177
+ http_res_text = await utils.stream_to_text_async(http_res)
1178
+ raise errors.APIError("API error occurred", http_res, http_res_text)
1179
+
1180
+ raise errors.APIError("Unexpected response received", http_res)
1181
+
983
1182
  def directory_member_bulk_load(
984
1183
  self,
985
1184
  *,
@@ -186,6 +186,7 @@ if TYPE_CHECKING:
186
186
  CustomMessageUpdateRequest,
187
187
  CustomMessageUpdateRequestTypedDict,
188
188
  )
189
+ from .daotoolresponse import DaoToolResponse, DaoToolResponseTypedDict
189
190
  from .dashboard import Dashboard, DashboardTypedDict
190
191
  from .dashboardproperties import DashboardProperties
191
192
  from .dashboardresponse import DashboardResponse, DashboardResponseTypedDict
@@ -240,29 +241,33 @@ if TYPE_CHECKING:
240
241
  DirectoryMemberListRequest,
241
242
  DirectoryMemberListRequestTypedDict,
242
243
  )
244
+ from .directory_member_test_extensionop import (
245
+ DirectoryMemberTestExtensionRequest,
246
+ DirectoryMemberTestExtensionRequestTypedDict,
247
+ )
243
248
  from .directory_member_updateop import (
244
249
  DirectoryMemberUpdateRequest,
245
250
  DirectoryMemberUpdateRequestTypedDict,
246
251
  )
247
- from .directoryextension import (
248
- DirectoryExtension,
249
- DirectoryExtensionTypedDict,
250
- Number,
251
- NumberTypedDict,
252
- )
253
- from .directorymember import (
254
- DirectoryMember,
255
- DirectoryMemberContactTags,
256
- DirectoryMemberContactTagsTypedDict,
257
- DirectoryMemberTypedDict,
252
+ from .directoryextension import DirectoryExtension, DirectoryExtensionTypedDict
253
+ from .directoryextensionnumber import (
254
+ DirectoryExtensionNumber,
255
+ DirectoryExtensionNumberTypedDict,
258
256
  )
257
+ from .directorymember import DirectoryMember, DirectoryMemberTypedDict
259
258
  from .directorymembercreate import (
260
259
  DirectoryMemberCreate,
261
- DirectoryMemberCreateContactTags,
262
- DirectoryMemberCreateContactTagsTypedDict,
263
260
  DirectoryMemberCreateTypedDict,
264
261
  )
265
262
  from .directorymemberproperties import DirectoryMemberProperties
263
+ from .directorymembertestresponse import (
264
+ DirectoryMemberTestResponse,
265
+ DirectoryMemberTestResponseTypedDict,
266
+ )
267
+ from .directorymemberupdate import (
268
+ DirectoryMemberUpdate,
269
+ DirectoryMemberUpdateTypedDict,
270
+ )
266
271
  from .event import Attributes, AttributesTypedDict, Event, EventTypedDict
267
272
  from .eventproperties import EventProperties
268
273
  from .events_listop import EventsListRequest, EventsListRequestTypedDict
@@ -1061,6 +1066,8 @@ __all__ = [
1061
1066
  "CustomMessagesDeleteRequestTypedDict",
1062
1067
  "CustomMessagesListRequest",
1063
1068
  "CustomMessagesListRequestTypedDict",
1069
+ "DaoToolResponse",
1070
+ "DaoToolResponseTypedDict",
1064
1071
  "Dashboard",
1065
1072
  "DashboardProperties",
1066
1073
  "DashboardResponse",
@@ -1095,13 +1102,11 @@ __all__ = [
1095
1102
  "DictionaryMetadata",
1096
1103
  "DictionaryMetadataTypedDict",
1097
1104
  "DirectoryExtension",
1105
+ "DirectoryExtensionNumber",
1106
+ "DirectoryExtensionNumberTypedDict",
1098
1107
  "DirectoryExtensionTypedDict",
1099
1108
  "DirectoryMember",
1100
- "DirectoryMemberContactTags",
1101
- "DirectoryMemberContactTagsTypedDict",
1102
1109
  "DirectoryMemberCreate",
1103
- "DirectoryMemberCreateContactTags",
1104
- "DirectoryMemberCreateContactTagsTypedDict",
1105
1110
  "DirectoryMemberCreateTypedDict",
1106
1111
  "DirectoryMemberDeleteRequest",
1107
1112
  "DirectoryMemberDeleteRequestTypedDict",
@@ -1110,9 +1115,15 @@ __all__ = [
1110
1115
  "DirectoryMemberListRequest",
1111
1116
  "DirectoryMemberListRequestTypedDict",
1112
1117
  "DirectoryMemberProperties",
1118
+ "DirectoryMemberTestExtensionRequest",
1119
+ "DirectoryMemberTestExtensionRequestTypedDict",
1120
+ "DirectoryMemberTestResponse",
1121
+ "DirectoryMemberTestResponseTypedDict",
1113
1122
  "DirectoryMemberTypedDict",
1123
+ "DirectoryMemberUpdate",
1114
1124
  "DirectoryMemberUpdateRequest",
1115
1125
  "DirectoryMemberUpdateRequestTypedDict",
1126
+ "DirectoryMemberUpdateTypedDict",
1116
1127
  "Event",
1117
1128
  "EventProperties",
1118
1129
  "EventTypedDict",
@@ -1308,8 +1319,6 @@ __all__ = [
1308
1319
  "MatchType",
1309
1320
  "Metadata",
1310
1321
  "MetadataTypedDict",
1311
- "Number",
1312
- "NumberTypedDict",
1313
1322
  "OrderByDirection",
1314
1323
  "OrganizationChannelConfig",
1315
1324
  "OrganizationChannelConfigTypedDict",
@@ -1701,6 +1710,8 @@ _dynamic_imports: dict[str, str] = {
1701
1710
  "CustomMessageRuleTypedDict": ".custommessagerule",
1702
1711
  "CustomMessageUpdateRequest": ".custommessageupdaterequest",
1703
1712
  "CustomMessageUpdateRequestTypedDict": ".custommessageupdaterequest",
1713
+ "DaoToolResponse": ".daotoolresponse",
1714
+ "DaoToolResponseTypedDict": ".daotoolresponse",
1704
1715
  "Dashboard": ".dashboard",
1705
1716
  "DashboardTypedDict": ".dashboard",
1706
1717
  "DashboardProperties": ".dashboardproperties",
@@ -1738,21 +1749,23 @@ _dynamic_imports: dict[str, str] = {
1738
1749
  "DirectoryMemberGetByIDRequestTypedDict": ".directory_member_get_by_idop",
1739
1750
  "DirectoryMemberListRequest": ".directory_member_listop",
1740
1751
  "DirectoryMemberListRequestTypedDict": ".directory_member_listop",
1752
+ "DirectoryMemberTestExtensionRequest": ".directory_member_test_extensionop",
1753
+ "DirectoryMemberTestExtensionRequestTypedDict": ".directory_member_test_extensionop",
1741
1754
  "DirectoryMemberUpdateRequest": ".directory_member_updateop",
1742
1755
  "DirectoryMemberUpdateRequestTypedDict": ".directory_member_updateop",
1743
1756
  "DirectoryExtension": ".directoryextension",
1744
1757
  "DirectoryExtensionTypedDict": ".directoryextension",
1745
- "Number": ".directoryextension",
1746
- "NumberTypedDict": ".directoryextension",
1758
+ "DirectoryExtensionNumber": ".directoryextensionnumber",
1759
+ "DirectoryExtensionNumberTypedDict": ".directoryextensionnumber",
1747
1760
  "DirectoryMember": ".directorymember",
1748
- "DirectoryMemberContactTags": ".directorymember",
1749
- "DirectoryMemberContactTagsTypedDict": ".directorymember",
1750
1761
  "DirectoryMemberTypedDict": ".directorymember",
1751
1762
  "DirectoryMemberCreate": ".directorymembercreate",
1752
- "DirectoryMemberCreateContactTags": ".directorymembercreate",
1753
- "DirectoryMemberCreateContactTagsTypedDict": ".directorymembercreate",
1754
1763
  "DirectoryMemberCreateTypedDict": ".directorymembercreate",
1755
1764
  "DirectoryMemberProperties": ".directorymemberproperties",
1765
+ "DirectoryMemberTestResponse": ".directorymembertestresponse",
1766
+ "DirectoryMemberTestResponseTypedDict": ".directorymembertestresponse",
1767
+ "DirectoryMemberUpdate": ".directorymemberupdate",
1768
+ "DirectoryMemberUpdateTypedDict": ".directorymemberupdate",
1756
1769
  "Attributes": ".event",
1757
1770
  "AttributesTypedDict": ".event",
1758
1771
  "Event": ".event",
@@ -0,0 +1,112 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .toolagentinfo import ToolAgentInfo, ToolAgentInfoTypedDict
5
+ from .tooldefinition import ToolDefinition, ToolDefinitionTypedDict
6
+ from .toolpromptinfo import ToolPromptInfo, ToolPromptInfoTypedDict
7
+ from datetime import datetime
8
+ from pydantic import model_serializer
9
+ from syllable_sdk.types import (
10
+ BaseModel,
11
+ Nullable,
12
+ OptionalNullable,
13
+ UNSET,
14
+ UNSET_SENTINEL,
15
+ )
16
+ from typing import List
17
+ from typing_extensions import NotRequired, TypedDict
18
+
19
+
20
+ class DaoToolResponseTypedDict(TypedDict):
21
+ name: str
22
+ r"""The name of the tool"""
23
+ definition: ToolDefinitionTypedDict
24
+ r"""A tool that can be called from an LLM during the conversation. See https://docs.syllable.ai/Resources/Tools."""
25
+ service_id: int
26
+ r"""Internal ID of the service to which the tool belongs"""
27
+ id: int
28
+ r"""The internal ID of the tool"""
29
+ last_updated: datetime
30
+ r"""The timestamp of the most recent update to the tool"""
31
+ last_updated_by: str
32
+ r"""The email of the user who last updated the tool"""
33
+ last_updated_comments: NotRequired[Nullable[str]]
34
+ r"""Comments for the most recent edit to the tool."""
35
+ service_name: NotRequired[Nullable[str]]
36
+ r"""The name of the service to which the tool belongs"""
37
+ prompts_info: NotRequired[Nullable[List[ToolPromptInfoTypedDict]]]
38
+ r"""IDs and names of the prompts linked to the tool"""
39
+ agents_info: NotRequired[Nullable[List[ToolAgentInfoTypedDict]]]
40
+ r"""IDs and names of the agents linked to the tool via a prompt"""
41
+
42
+
43
+ class DaoToolResponse(BaseModel):
44
+ name: str
45
+ r"""The name of the tool"""
46
+
47
+ definition: ToolDefinition
48
+ r"""A tool that can be called from an LLM during the conversation. See https://docs.syllable.ai/Resources/Tools."""
49
+
50
+ service_id: int
51
+ r"""Internal ID of the service to which the tool belongs"""
52
+
53
+ id: int
54
+ r"""The internal ID of the tool"""
55
+
56
+ last_updated: datetime
57
+ r"""The timestamp of the most recent update to the tool"""
58
+
59
+ last_updated_by: str
60
+ r"""The email of the user who last updated the tool"""
61
+
62
+ last_updated_comments: OptionalNullable[str] = UNSET
63
+ r"""Comments for the most recent edit to the tool."""
64
+
65
+ service_name: OptionalNullable[str] = UNSET
66
+ r"""The name of the service to which the tool belongs"""
67
+
68
+ prompts_info: OptionalNullable[List[ToolPromptInfo]] = UNSET
69
+ r"""IDs and names of the prompts linked to the tool"""
70
+
71
+ agents_info: OptionalNullable[List[ToolAgentInfo]] = UNSET
72
+ r"""IDs and names of the agents linked to the tool via a prompt"""
73
+
74
+ @model_serializer(mode="wrap")
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
+
90
+ serialized = handler(self)
91
+
92
+ m = {}
93
+
94
+ for n, f in type(self).model_fields.items():
95
+ k = f.alias or n
96
+ 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
111
+
112
+ return m
@@ -0,0 +1,70 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .languagecode import LanguageCode
5
+ from datetime import datetime
6
+ from pydantic import model_serializer
7
+ from syllable_sdk.types import (
8
+ BaseModel,
9
+ Nullable,
10
+ OptionalNullable,
11
+ UNSET,
12
+ UNSET_SENTINEL,
13
+ )
14
+ from syllable_sdk.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata
15
+ from typing_extensions import Annotated, NotRequired, TypedDict
16
+
17
+
18
+ class DirectoryMemberTestExtensionRequestTypedDict(TypedDict):
19
+ member_id: int
20
+ timestamp: datetime
21
+ r"""Timestamp for test"""
22
+ language_code: NotRequired[Nullable[LanguageCode]]
23
+ r"""Optional language code for test"""
24
+
25
+
26
+ class DirectoryMemberTestExtensionRequest(BaseModel):
27
+ member_id: Annotated[
28
+ int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
29
+ ]
30
+
31
+ timestamp: Annotated[
32
+ datetime, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
33
+ ]
34
+ r"""Timestamp for test"""
35
+
36
+ language_code: Annotated[
37
+ OptionalNullable[LanguageCode],
38
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
39
+ ] = UNSET
40
+ r"""Optional language code for test"""
41
+
42
+ @model_serializer(mode="wrap")
43
+ def serialize_model(self, handler):
44
+ optional_fields = ["language_code"]
45
+ nullable_fields = ["language_code"]
46
+ null_default_fields = []
47
+
48
+ serialized = handler(self)
49
+
50
+ m = {}
51
+
52
+ for n, f in type(self).model_fields.items():
53
+ k = f.alias or n
54
+ val = serialized.get(k)
55
+ serialized.pop(k, None)
56
+
57
+ optional_nullable = k in optional_fields and k in nullable_fields
58
+ is_set = (
59
+ self.__pydantic_fields_set__.intersection({n})
60
+ or k in null_default_fields
61
+ ) # pylint: disable=no-member
62
+
63
+ if val is not None and val != UNSET_SENTINEL:
64
+ m[k] = val
65
+ elif val != UNSET_SENTINEL and (
66
+ not k in optional_fields or (optional_nullable and is_set)
67
+ ):
68
+ m[k] = val
69
+
70
+ return m
@@ -1,7 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .directorymember import DirectoryMember, DirectoryMemberTypedDict
4
+ from .directorymemberupdate import DirectoryMemberUpdate, DirectoryMemberUpdateTypedDict
5
5
  from syllable_sdk.types import BaseModel
6
6
  from syllable_sdk.utils import FieldMetadata, PathParamMetadata, RequestMetadata
7
7
  from typing_extensions import Annotated, TypedDict
@@ -9,7 +9,7 @@ from typing_extensions import Annotated, TypedDict
9
9
 
10
10
  class DirectoryMemberUpdateRequestTypedDict(TypedDict):
11
11
  member_id: int
12
- directory_member: DirectoryMemberTypedDict
12
+ directory_member_update: DirectoryMemberUpdateTypedDict
13
13
 
14
14
 
15
15
  class DirectoryMemberUpdateRequest(BaseModel):
@@ -17,7 +17,7 @@ class DirectoryMemberUpdateRequest(BaseModel):
17
17
  int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
18
18
  ]
19
19
 
20
- directory_member: Annotated[
21
- DirectoryMember,
20
+ directory_member_update: Annotated[
21
+ DirectoryMemberUpdate,
22
22
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
23
23
  ]