syllable-sdk 0.39.4__py3-none-any.whl → 0.40.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,6 +36,12 @@ if TYPE_CHECKING:
36
36
  from .batchdetails import BatchDetails, BatchDetailsTypedDict
37
37
  from .batchproperties import BatchProperties
38
38
  from .batchstatus import BatchStatus
39
+ from .body_directory_member_bulk_load import (
40
+ BodyDirectoryMemberBulkLoad,
41
+ BodyDirectoryMemberBulkLoadFile,
42
+ BodyDirectoryMemberBulkLoadFileTypedDict,
43
+ BodyDirectoryMemberBulkLoadTypedDict,
44
+ )
39
45
  from .body_insights_folder_upload_file import (
40
46
  BodyInsightsFolderUploadFile,
41
47
  BodyInsightsFolderUploadFileFile,
@@ -222,6 +228,41 @@ if TYPE_CHECKING:
222
228
  from .dialogrole import DialogRole
223
229
  from .dialogtoolcall import DialogToolCall, DialogToolCallTypedDict
224
230
  from .dictionarymetadata import DictionaryMetadata, DictionaryMetadataTypedDict
231
+ from .directory_member_deleteop import (
232
+ DirectoryMemberDeleteRequest,
233
+ DirectoryMemberDeleteRequestTypedDict,
234
+ )
235
+ from .directory_member_get_by_idop import (
236
+ DirectoryMemberGetByIDRequest,
237
+ DirectoryMemberGetByIDRequestTypedDict,
238
+ )
239
+ from .directory_member_listop import (
240
+ DirectoryMemberListRequest,
241
+ DirectoryMemberListRequestTypedDict,
242
+ )
243
+ from .directory_member_updateop import (
244
+ DirectoryMemberUpdateRequest,
245
+ DirectoryMemberUpdateRequestTypedDict,
246
+ )
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,
258
+ )
259
+ from .directorymembercreate import (
260
+ DirectoryMemberCreate,
261
+ DirectoryMemberCreateContactTags,
262
+ DirectoryMemberCreateContactTagsTypedDict,
263
+ DirectoryMemberCreateTypedDict,
264
+ )
265
+ from .directorymemberproperties import DirectoryMemberProperties
225
266
  from .event import Attributes, AttributesTypedDict, Event, EventTypedDict
226
267
  from .eventproperties import EventProperties
227
268
  from .events_listop import EventsListRequest, EventsListRequestTypedDict
@@ -473,6 +514,10 @@ if TYPE_CHECKING:
473
514
  ListResponseDataSourceMetadataResponse,
474
515
  ListResponseDataSourceMetadataResponseTypedDict,
475
516
  )
517
+ from .listresponse_directorymember_ import (
518
+ ListResponseDirectoryMember,
519
+ ListResponseDirectoryMemberTypedDict,
520
+ )
476
521
  from .listresponse_event_ import ListResponseEvent, ListResponseEventTypedDict
477
522
  from .listresponse_incidentresponse_ import (
478
523
  ListResponseIncidentResponse,
@@ -922,6 +967,10 @@ __all__ = [
922
967
  "BatchDetailsTypedDict",
923
968
  "BatchProperties",
924
969
  "BatchStatus",
970
+ "BodyDirectoryMemberBulkLoad",
971
+ "BodyDirectoryMemberBulkLoadFile",
972
+ "BodyDirectoryMemberBulkLoadFileTypedDict",
973
+ "BodyDirectoryMemberBulkLoadTypedDict",
925
974
  "BodyInsightsFolderUploadFile",
926
975
  "BodyInsightsFolderUploadFileFile",
927
976
  "BodyInsightsFolderUploadFileFileTypedDict",
@@ -1045,6 +1094,25 @@ __all__ = [
1045
1094
  "DialogToolCallTypedDict",
1046
1095
  "DictionaryMetadata",
1047
1096
  "DictionaryMetadataTypedDict",
1097
+ "DirectoryExtension",
1098
+ "DirectoryExtensionTypedDict",
1099
+ "DirectoryMember",
1100
+ "DirectoryMemberContactTags",
1101
+ "DirectoryMemberContactTagsTypedDict",
1102
+ "DirectoryMemberCreate",
1103
+ "DirectoryMemberCreateContactTags",
1104
+ "DirectoryMemberCreateContactTagsTypedDict",
1105
+ "DirectoryMemberCreateTypedDict",
1106
+ "DirectoryMemberDeleteRequest",
1107
+ "DirectoryMemberDeleteRequestTypedDict",
1108
+ "DirectoryMemberGetByIDRequest",
1109
+ "DirectoryMemberGetByIDRequestTypedDict",
1110
+ "DirectoryMemberListRequest",
1111
+ "DirectoryMemberListRequestTypedDict",
1112
+ "DirectoryMemberProperties",
1113
+ "DirectoryMemberTypedDict",
1114
+ "DirectoryMemberUpdateRequest",
1115
+ "DirectoryMemberUpdateRequestTypedDict",
1048
1116
  "Event",
1049
1117
  "EventProperties",
1050
1118
  "EventTypedDict",
@@ -1198,6 +1266,8 @@ __all__ = [
1198
1266
  "ListResponseDashboardResponseTypedDict",
1199
1267
  "ListResponseDataSourceMetadataResponse",
1200
1268
  "ListResponseDataSourceMetadataResponseTypedDict",
1269
+ "ListResponseDirectoryMember",
1270
+ "ListResponseDirectoryMemberTypedDict",
1201
1271
  "ListResponseEvent",
1202
1272
  "ListResponseEventTypedDict",
1203
1273
  "ListResponseIncidentResponse",
@@ -1238,6 +1308,8 @@ __all__ = [
1238
1308
  "MatchType",
1239
1309
  "Metadata",
1240
1310
  "MetadataTypedDict",
1311
+ "Number",
1312
+ "NumberTypedDict",
1241
1313
  "OrderByDirection",
1242
1314
  "OrganizationChannelConfig",
1243
1315
  "OrganizationChannelConfigTypedDict",
@@ -1535,6 +1607,10 @@ _dynamic_imports: dict[str, str] = {
1535
1607
  "BatchDetailsTypedDict": ".batchdetails",
1536
1608
  "BatchProperties": ".batchproperties",
1537
1609
  "BatchStatus": ".batchstatus",
1610
+ "BodyDirectoryMemberBulkLoad": ".body_directory_member_bulk_load",
1611
+ "BodyDirectoryMemberBulkLoadFile": ".body_directory_member_bulk_load",
1612
+ "BodyDirectoryMemberBulkLoadFileTypedDict": ".body_directory_member_bulk_load",
1613
+ "BodyDirectoryMemberBulkLoadTypedDict": ".body_directory_member_bulk_load",
1538
1614
  "BodyInsightsFolderUploadFile": ".body_insights_folder_upload_file",
1539
1615
  "BodyInsightsFolderUploadFileFile": ".body_insights_folder_upload_file",
1540
1616
  "BodyInsightsFolderUploadFileFileTypedDict": ".body_insights_folder_upload_file",
@@ -1656,6 +1732,27 @@ _dynamic_imports: dict[str, str] = {
1656
1732
  "DialogToolCallTypedDict": ".dialogtoolcall",
1657
1733
  "DictionaryMetadata": ".dictionarymetadata",
1658
1734
  "DictionaryMetadataTypedDict": ".dictionarymetadata",
1735
+ "DirectoryMemberDeleteRequest": ".directory_member_deleteop",
1736
+ "DirectoryMemberDeleteRequestTypedDict": ".directory_member_deleteop",
1737
+ "DirectoryMemberGetByIDRequest": ".directory_member_get_by_idop",
1738
+ "DirectoryMemberGetByIDRequestTypedDict": ".directory_member_get_by_idop",
1739
+ "DirectoryMemberListRequest": ".directory_member_listop",
1740
+ "DirectoryMemberListRequestTypedDict": ".directory_member_listop",
1741
+ "DirectoryMemberUpdateRequest": ".directory_member_updateop",
1742
+ "DirectoryMemberUpdateRequestTypedDict": ".directory_member_updateop",
1743
+ "DirectoryExtension": ".directoryextension",
1744
+ "DirectoryExtensionTypedDict": ".directoryextension",
1745
+ "Number": ".directoryextension",
1746
+ "NumberTypedDict": ".directoryextension",
1747
+ "DirectoryMember": ".directorymember",
1748
+ "DirectoryMemberContactTags": ".directorymember",
1749
+ "DirectoryMemberContactTagsTypedDict": ".directorymember",
1750
+ "DirectoryMemberTypedDict": ".directorymember",
1751
+ "DirectoryMemberCreate": ".directorymembercreate",
1752
+ "DirectoryMemberCreateContactTags": ".directorymembercreate",
1753
+ "DirectoryMemberCreateContactTagsTypedDict": ".directorymembercreate",
1754
+ "DirectoryMemberCreateTypedDict": ".directorymembercreate",
1755
+ "DirectoryMemberProperties": ".directorymemberproperties",
1659
1756
  "Attributes": ".event",
1660
1757
  "AttributesTypedDict": ".event",
1661
1758
  "Event": ".event",
@@ -1815,6 +1912,8 @@ _dynamic_imports: dict[str, str] = {
1815
1912
  "ListResponseDashboardResponseTypedDict": ".listresponse_dashboardresponse_",
1816
1913
  "ListResponseDataSourceMetadataResponse": ".listresponse_datasourcemetadataresponse_",
1817
1914
  "ListResponseDataSourceMetadataResponseTypedDict": ".listresponse_datasourcemetadataresponse_",
1915
+ "ListResponseDirectoryMember": ".listresponse_directorymember_",
1916
+ "ListResponseDirectoryMemberTypedDict": ".listresponse_directorymember_",
1818
1917
  "ListResponseEvent": ".listresponse_event_",
1819
1918
  "ListResponseEventTypedDict": ".listresponse_event_",
1820
1919
  "ListResponseIncidentResponse": ".listresponse_incidentresponse_",
@@ -0,0 +1,44 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import io
5
+ import pydantic
6
+ from syllable_sdk.types import BaseModel
7
+ from syllable_sdk.utils import FieldMetadata, MultipartFormMetadata
8
+ from typing import IO, Optional, Union
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class BodyDirectoryMemberBulkLoadFileTypedDict(TypedDict):
13
+ file_name: str
14
+ content: Union[bytes, IO[bytes], io.BufferedReader]
15
+ content_type: NotRequired[str]
16
+
17
+
18
+ class BodyDirectoryMemberBulkLoadFile(BaseModel):
19
+ file_name: Annotated[
20
+ str, pydantic.Field(alias="fileName"), FieldMetadata(multipart=True)
21
+ ]
22
+
23
+ content: Annotated[
24
+ Union[bytes, IO[bytes], io.BufferedReader],
25
+ pydantic.Field(alias=""),
26
+ FieldMetadata(multipart=MultipartFormMetadata(content=True)),
27
+ ]
28
+
29
+ content_type: Annotated[
30
+ Optional[str],
31
+ pydantic.Field(alias="Content-Type"),
32
+ FieldMetadata(multipart=True),
33
+ ] = None
34
+
35
+
36
+ class BodyDirectoryMemberBulkLoadTypedDict(TypedDict):
37
+ file: BodyDirectoryMemberBulkLoadFileTypedDict
38
+
39
+
40
+ class BodyDirectoryMemberBulkLoad(BaseModel):
41
+ file: Annotated[
42
+ BodyDirectoryMemberBulkLoadFile,
43
+ FieldMetadata(multipart=MultipartFormMetadata(file=True)),
44
+ ]
@@ -0,0 +1,16 @@
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 syllable_sdk.utils import FieldMetadata, PathParamMetadata
6
+ from typing_extensions import Annotated, TypedDict
7
+
8
+
9
+ class DirectoryMemberDeleteRequestTypedDict(TypedDict):
10
+ member_id: int
11
+
12
+
13
+ class DirectoryMemberDeleteRequest(BaseModel):
14
+ member_id: Annotated[
15
+ int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
16
+ ]
@@ -0,0 +1,16 @@
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 syllable_sdk.utils import FieldMetadata, PathParamMetadata
6
+ from typing_extensions import Annotated, TypedDict
7
+
8
+
9
+ class DirectoryMemberGetByIDRequestTypedDict(TypedDict):
10
+ member_id: int
11
+
12
+
13
+ class DirectoryMemberGetByIDRequest(BaseModel):
14
+ member_id: Annotated[
15
+ int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
16
+ ]
@@ -0,0 +1,140 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .directorymemberproperties import DirectoryMemberProperties
5
+ from .orderbydirection import OrderByDirection
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, QueryParamMetadata
15
+ from typing import List, Optional
16
+ from typing_extensions import Annotated, NotRequired, TypedDict
17
+
18
+
19
+ class DirectoryMemberListRequestTypedDict(TypedDict):
20
+ page: NotRequired[Nullable[int]]
21
+ r"""The page number from which to start (0-based)"""
22
+ limit: NotRequired[int]
23
+ r"""The maximum number of items to return"""
24
+ search_fields: NotRequired[List[DirectoryMemberProperties]]
25
+ r"""String names of fields to search. Correspond by index to search field values"""
26
+ search_field_values: NotRequired[List[str]]
27
+ r"""Values of fields to search. Correspond by index to search fields. Unless field name contains \"list\", an individual search field value cannot be a list"""
28
+ order_by: NotRequired[Nullable[DirectoryMemberProperties]]
29
+ r"""The field whose value should be used to order the results"""
30
+ order_by_direction: NotRequired[Nullable[OrderByDirection]]
31
+ r"""The direction in which to order the results"""
32
+ fields: NotRequired[Nullable[List[DirectoryMemberProperties]]]
33
+ r"""The fields to include in the response"""
34
+ start_datetime: NotRequired[Nullable[str]]
35
+ r"""The start datetime for filtering results"""
36
+ end_datetime: NotRequired[Nullable[str]]
37
+ r"""The end datetime for filtering results"""
38
+
39
+
40
+ class DirectoryMemberListRequest(BaseModel):
41
+ page: Annotated[
42
+ OptionalNullable[int],
43
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
44
+ ] = UNSET
45
+ r"""The page number from which to start (0-based)"""
46
+
47
+ limit: Annotated[
48
+ Optional[int],
49
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
50
+ ] = 25
51
+ r"""The maximum number of items to return"""
52
+
53
+ search_fields: Annotated[
54
+ Optional[List[DirectoryMemberProperties]],
55
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
56
+ ] = None
57
+ r"""String names of fields to search. Correspond by index to search field values"""
58
+
59
+ search_field_values: Annotated[
60
+ Optional[List[str]],
61
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
62
+ ] = None
63
+ r"""Values of fields to search. Correspond by index to search fields. Unless field name contains \"list\", an individual search field value cannot be a list"""
64
+
65
+ order_by: Annotated[
66
+ OptionalNullable[DirectoryMemberProperties],
67
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
68
+ ] = UNSET
69
+ r"""The field whose value should be used to order the results"""
70
+
71
+ order_by_direction: Annotated[
72
+ OptionalNullable[OrderByDirection],
73
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
74
+ ] = UNSET
75
+ r"""The direction in which to order the results"""
76
+
77
+ fields: Annotated[
78
+ OptionalNullable[List[DirectoryMemberProperties]],
79
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
80
+ ] = UNSET
81
+ r"""The fields to include in the response"""
82
+
83
+ start_datetime: Annotated[
84
+ OptionalNullable[str],
85
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
86
+ ] = UNSET
87
+ r"""The start datetime for filtering results"""
88
+
89
+ end_datetime: Annotated[
90
+ OptionalNullable[str],
91
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
92
+ ] = UNSET
93
+ r"""The end datetime for filtering results"""
94
+
95
+ @model_serializer(mode="wrap")
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
+
118
+ serialized = handler(self)
119
+
120
+ m = {}
121
+
122
+ for n, f in type(self).model_fields.items():
123
+ k = f.alias or n
124
+ 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
139
+
140
+ return m
@@ -0,0 +1,23 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .directorymember import DirectoryMember, DirectoryMemberTypedDict
5
+ from syllable_sdk.types import BaseModel
6
+ from syllable_sdk.utils import FieldMetadata, PathParamMetadata, RequestMetadata
7
+ from typing_extensions import Annotated, TypedDict
8
+
9
+
10
+ class DirectoryMemberUpdateRequestTypedDict(TypedDict):
11
+ member_id: int
12
+ directory_member: DirectoryMemberTypedDict
13
+
14
+
15
+ class DirectoryMemberUpdateRequest(BaseModel):
16
+ member_id: Annotated[
17
+ int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
18
+ ]
19
+
20
+ directory_member: Annotated[
21
+ DirectoryMember,
22
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
23
+ ]
@@ -0,0 +1,62 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from pydantic import model_serializer
5
+ from syllable_sdk.types import (
6
+ BaseModel,
7
+ Nullable,
8
+ OptionalNullable,
9
+ UNSET,
10
+ UNSET_SENTINEL,
11
+ )
12
+ from typing import List
13
+ from typing_extensions import NotRequired, TypedDict
14
+
15
+
16
+ class NumberTypedDict(TypedDict):
17
+ pass
18
+
19
+
20
+ class Number(BaseModel):
21
+ pass
22
+
23
+
24
+ class DirectoryExtensionTypedDict(TypedDict):
25
+ name: str
26
+ numbers: NotRequired[Nullable[List[NumberTypedDict]]]
27
+
28
+
29
+ class DirectoryExtension(BaseModel):
30
+ name: str
31
+
32
+ numbers: OptionalNullable[List[Number]] = UNSET
33
+
34
+ @model_serializer(mode="wrap")
35
+ def serialize_model(self, handler):
36
+ optional_fields = ["numbers"]
37
+ nullable_fields = ["numbers"]
38
+ null_default_fields = []
39
+
40
+ serialized = handler(self)
41
+
42
+ m = {}
43
+
44
+ for n, f in type(self).model_fields.items():
45
+ k = f.alias or n
46
+ 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
61
+
62
+ return m
@@ -0,0 +1,103 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .directoryextension import DirectoryExtension, DirectoryExtensionTypedDict
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 typing import List
15
+ from typing_extensions import NotRequired, TypedDict
16
+
17
+
18
+ class DirectoryMemberContactTagsTypedDict(TypedDict):
19
+ pass
20
+
21
+
22
+ class DirectoryMemberContactTags(BaseModel):
23
+ pass
24
+
25
+
26
+ class DirectoryMemberTypedDict(TypedDict):
27
+ r"""Model for a directory member (i.e. a contact)."""
28
+
29
+ name: str
30
+ r"""Name of the directory member"""
31
+ type: str
32
+ r"""Type of the directory member"""
33
+ extensions: NotRequired[Nullable[List[DirectoryExtensionTypedDict]]]
34
+ r"""List of extensions for the directory member"""
35
+ contact_tags: NotRequired[Nullable[DirectoryMemberContactTagsTypedDict]]
36
+ updated_at: NotRequired[Nullable[datetime]]
37
+ last_updated_by: NotRequired[Nullable[str]]
38
+ id: NotRequired[Nullable[int]]
39
+ r"""Internal ID of the directory member"""
40
+
41
+
42
+ class DirectoryMember(BaseModel):
43
+ r"""Model for a directory member (i.e. a contact)."""
44
+
45
+ name: str
46
+ r"""Name of the directory member"""
47
+
48
+ type: str
49
+ r"""Type of the directory member"""
50
+
51
+ extensions: OptionalNullable[List[DirectoryExtension]] = UNSET
52
+ r"""List of extensions for the directory member"""
53
+
54
+ contact_tags: OptionalNullable[DirectoryMemberContactTags] = UNSET
55
+
56
+ updated_at: OptionalNullable[datetime] = UNSET
57
+
58
+ last_updated_by: OptionalNullable[str] = UNSET
59
+
60
+ id: OptionalNullable[int] = UNSET
61
+ r"""Internal ID of the directory member"""
62
+
63
+ @model_serializer(mode="wrap")
64
+ def serialize_model(self, handler):
65
+ optional_fields = [
66
+ "extensions",
67
+ "contact_tags",
68
+ "updated_at",
69
+ "last_updated_by",
70
+ "id",
71
+ ]
72
+ nullable_fields = [
73
+ "extensions",
74
+ "contact_tags",
75
+ "updated_at",
76
+ "last_updated_by",
77
+ "id",
78
+ ]
79
+ null_default_fields = []
80
+
81
+ serialized = handler(self)
82
+
83
+ m = {}
84
+
85
+ for n, f in type(self).model_fields.items():
86
+ k = f.alias or n
87
+ val = serialized.get(k)
88
+ serialized.pop(k, None)
89
+
90
+ optional_nullable = k in optional_fields and k in nullable_fields
91
+ is_set = (
92
+ self.__pydantic_fields_set__.intersection({n})
93
+ or k in null_default_fields
94
+ ) # pylint: disable=no-member
95
+
96
+ if val is not None and val != UNSET_SENTINEL:
97
+ m[k] = val
98
+ elif val != UNSET_SENTINEL and (
99
+ not k in optional_fields or (optional_nullable and is_set)
100
+ ):
101
+ m[k] = val
102
+
103
+ return m
@@ -0,0 +1,96 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .directoryextension import DirectoryExtension, DirectoryExtensionTypedDict
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 typing import List
15
+ from typing_extensions import NotRequired, TypedDict
16
+
17
+
18
+ class DirectoryMemberCreateContactTagsTypedDict(TypedDict):
19
+ pass
20
+
21
+
22
+ class DirectoryMemberCreateContactTags(BaseModel):
23
+ pass
24
+
25
+
26
+ class DirectoryMemberCreateTypedDict(TypedDict):
27
+ r"""Request model to create a directory member."""
28
+
29
+ name: str
30
+ r"""Name of the directory member"""
31
+ type: str
32
+ r"""Type of the directory member"""
33
+ extensions: NotRequired[Nullable[List[DirectoryExtensionTypedDict]]]
34
+ r"""List of extensions for the directory member"""
35
+ contact_tags: NotRequired[Nullable[DirectoryMemberCreateContactTagsTypedDict]]
36
+ updated_at: NotRequired[Nullable[datetime]]
37
+ last_updated_by: NotRequired[Nullable[str]]
38
+
39
+
40
+ class DirectoryMemberCreate(BaseModel):
41
+ r"""Request model to create a directory member."""
42
+
43
+ name: str
44
+ r"""Name of the directory member"""
45
+
46
+ type: str
47
+ r"""Type of the directory member"""
48
+
49
+ extensions: OptionalNullable[List[DirectoryExtension]] = UNSET
50
+ r"""List of extensions for the directory member"""
51
+
52
+ contact_tags: OptionalNullable[DirectoryMemberCreateContactTags] = UNSET
53
+
54
+ updated_at: OptionalNullable[datetime] = UNSET
55
+
56
+ last_updated_by: OptionalNullable[str] = UNSET
57
+
58
+ @model_serializer(mode="wrap")
59
+ def serialize_model(self, handler):
60
+ optional_fields = [
61
+ "extensions",
62
+ "contact_tags",
63
+ "updated_at",
64
+ "last_updated_by",
65
+ ]
66
+ nullable_fields = [
67
+ "extensions",
68
+ "contact_tags",
69
+ "updated_at",
70
+ "last_updated_by",
71
+ ]
72
+ null_default_fields = []
73
+
74
+ serialized = handler(self)
75
+
76
+ m = {}
77
+
78
+ for n, f in type(self).model_fields.items():
79
+ k = f.alias or n
80
+ val = serialized.get(k)
81
+ serialized.pop(k, None)
82
+
83
+ optional_nullable = k in optional_fields and k in nullable_fields
84
+ is_set = (
85
+ self.__pydantic_fields_set__.intersection({n})
86
+ or k in null_default_fields
87
+ ) # pylint: disable=no-member
88
+
89
+ if val is not None and val != UNSET_SENTINEL:
90
+ m[k] = val
91
+ elif val != UNSET_SENTINEL and (
92
+ not k in optional_fields or (optional_nullable and is_set)
93
+ ):
94
+ m[k] = val
95
+
96
+ return m
@@ -0,0 +1,13 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from enum import Enum
5
+
6
+
7
+ class DirectoryMemberProperties(str, Enum):
8
+ ID = "id"
9
+ NAME = "name"
10
+ TYPE = "type"
11
+ EXTENSIONS = "extensions"
12
+ CONTACT_TAGS = "contact_tags"
13
+ UPDATED_AT = "updated_at"