mergepythonclient 4.1.0__py3-none-any.whl → 4.2.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.
Files changed (143) hide show
  1. merge/core/client_wrapper.py +2 -2
  2. merge/resources/accounting/__init__.py +15 -0
  3. merge/resources/accounting/client.py +19 -0
  4. merge/resources/accounting/resources/__init__.py +3 -0
  5. merge/resources/accounting/resources/selective_sync/__init__.py +4 -0
  6. merge/resources/accounting/resources/selective_sync/client.py +104 -0
  7. merge/resources/accounting/resources/selective_sync/raw_client.py +103 -0
  8. merge/resources/accounting/types/__init__.py +12 -0
  9. merge/resources/accounting/types/operator_enum.py +58 -0
  10. merge/resources/accounting/types/selective_sync_condition.py +49 -0
  11. merge/resources/accounting/types/selective_sync_condition_list.py +21 -0
  12. merge/resources/accounting/types/selective_sync_condition_operator.py +7 -0
  13. merge/resources/accounting/types/sync_status.py +5 -0
  14. merge/resources/ats/__init__.py +15 -0
  15. merge/resources/ats/client.py +19 -0
  16. merge/resources/ats/resources/__init__.py +3 -0
  17. merge/resources/ats/resources/selective_sync/__init__.py +4 -0
  18. merge/resources/ats/resources/selective_sync/client.py +104 -0
  19. merge/resources/ats/resources/selective_sync/raw_client.py +103 -0
  20. merge/resources/ats/types/__init__.py +12 -0
  21. merge/resources/ats/types/operator_enum.py +58 -0
  22. merge/resources/ats/types/selective_sync_condition.py +49 -0
  23. merge/resources/ats/types/selective_sync_condition_list.py +21 -0
  24. merge/resources/ats/types/selective_sync_condition_operator.py +7 -0
  25. merge/resources/ats/types/sync_status.py +5 -0
  26. merge/resources/calendar/__init__.py +15 -0
  27. merge/resources/calendar/client.py +19 -0
  28. merge/resources/calendar/resources/__init__.py +3 -0
  29. merge/resources/calendar/resources/selective_sync/__init__.py +4 -0
  30. merge/resources/calendar/resources/selective_sync/client.py +104 -0
  31. merge/resources/calendar/resources/selective_sync/raw_client.py +103 -0
  32. merge/resources/calendar/types/__init__.py +12 -0
  33. merge/resources/calendar/types/operator_enum.py +58 -0
  34. merge/resources/calendar/types/selective_sync_condition.py +49 -0
  35. merge/resources/calendar/types/selective_sync_condition_list.py +21 -0
  36. merge/resources/calendar/types/selective_sync_condition_operator.py +7 -0
  37. merge/resources/calendar/types/sync_status.py +5 -0
  38. merge/resources/chat/__init__.py +33 -0
  39. merge/resources/chat/client.py +19 -0
  40. merge/resources/chat/resources/__init__.py +3 -0
  41. merge/resources/chat/resources/selective_sync/__init__.py +4 -0
  42. merge/resources/chat/resources/selective_sync/client.py +264 -0
  43. merge/resources/chat/resources/selective_sync/raw_client.py +293 -0
  44. merge/resources/chat/types/__init__.py +30 -0
  45. merge/resources/chat/types/chat_sync_selection.py +50 -0
  46. merge/resources/chat/types/chat_sync_selection_type.py +7 -0
  47. merge/resources/chat/types/chat_sync_selection_type_enum.py +18 -0
  48. merge/resources/chat/types/label_selection.py +43 -0
  49. merge/resources/chat/types/label_selection_list.py +21 -0
  50. merge/resources/chat/types/operator_enum.py +58 -0
  51. merge/resources/chat/types/paginated_chat_sync_selection_list.py +23 -0
  52. merge/resources/chat/types/selective_sync_condition.py +49 -0
  53. merge/resources/chat/types/selective_sync_condition_list.py +21 -0
  54. merge/resources/chat/types/selective_sync_condition_operator.py +7 -0
  55. merge/resources/chat/types/sync_status.py +5 -0
  56. merge/resources/crm/__init__.py +15 -0
  57. merge/resources/crm/client.py +19 -0
  58. merge/resources/crm/resources/__init__.py +3 -0
  59. merge/resources/crm/resources/selective_sync/__init__.py +4 -0
  60. merge/resources/crm/resources/selective_sync/client.py +104 -0
  61. merge/resources/crm/resources/selective_sync/raw_client.py +103 -0
  62. merge/resources/crm/types/__init__.py +12 -0
  63. merge/resources/crm/types/operator_enum.py +58 -0
  64. merge/resources/crm/types/selective_sync_condition.py +49 -0
  65. merge/resources/crm/types/selective_sync_condition_list.py +21 -0
  66. merge/resources/crm/types/selective_sync_condition_operator.py +7 -0
  67. merge/resources/crm/types/sync_status.py +5 -0
  68. merge/resources/email/__init__.py +21 -0
  69. merge/resources/email/client.py +19 -0
  70. merge/resources/email/resources/__init__.py +3 -0
  71. merge/resources/email/resources/selective_sync/__init__.py +4 -0
  72. merge/resources/email/resources/selective_sync/client.py +167 -0
  73. merge/resources/email/resources/selective_sync/raw_client.py +184 -0
  74. merge/resources/email/types/__init__.py +18 -0
  75. merge/resources/email/types/label_selection.py +43 -0
  76. merge/resources/email/types/label_selection_list.py +21 -0
  77. merge/resources/email/types/operator_enum.py +58 -0
  78. merge/resources/email/types/selective_sync_condition.py +49 -0
  79. merge/resources/email/types/selective_sync_condition_list.py +21 -0
  80. merge/resources/email/types/selective_sync_condition_operator.py +7 -0
  81. merge/resources/email/types/sync_status.py +5 -0
  82. merge/resources/filestorage/__init__.py +33 -0
  83. merge/resources/filestorage/client.py +19 -0
  84. merge/resources/filestorage/resources/__init__.py +3 -0
  85. merge/resources/filestorage/resources/selective_sync/__init__.py +4 -0
  86. merge/resources/filestorage/resources/selective_sync/client.py +264 -0
  87. merge/resources/filestorage/resources/selective_sync/raw_client.py +293 -0
  88. merge/resources/filestorage/types/__init__.py +30 -0
  89. merge/resources/filestorage/types/file_storage_sync_selection.py +50 -0
  90. merge/resources/filestorage/types/file_storage_sync_selection_type.py +7 -0
  91. merge/resources/filestorage/types/file_storage_sync_selection_type_enum.py +26 -0
  92. merge/resources/filestorage/types/label_selection.py +43 -0
  93. merge/resources/filestorage/types/label_selection_list.py +21 -0
  94. merge/resources/filestorage/types/operator_enum.py +58 -0
  95. merge/resources/filestorage/types/paginated_file_storage_sync_selection_list.py +23 -0
  96. merge/resources/filestorage/types/selective_sync_condition.py +49 -0
  97. merge/resources/filestorage/types/selective_sync_condition_list.py +21 -0
  98. merge/resources/filestorage/types/selective_sync_condition_operator.py +7 -0
  99. merge/resources/filestorage/types/sync_status.py +5 -0
  100. merge/resources/hris/__init__.py +15 -0
  101. merge/resources/hris/client.py +19 -0
  102. merge/resources/hris/resources/__init__.py +3 -0
  103. merge/resources/hris/resources/selective_sync/__init__.py +4 -0
  104. merge/resources/hris/resources/selective_sync/client.py +104 -0
  105. merge/resources/hris/resources/selective_sync/raw_client.py +103 -0
  106. merge/resources/hris/types/__init__.py +12 -0
  107. merge/resources/hris/types/operator_enum.py +58 -0
  108. merge/resources/hris/types/selective_sync_condition.py +49 -0
  109. merge/resources/hris/types/selective_sync_condition_list.py +21 -0
  110. merge/resources/hris/types/selective_sync_condition_operator.py +7 -0
  111. merge/resources/hris/types/sync_status.py +5 -0
  112. merge/resources/knowledgebase/__init__.py +27 -0
  113. merge/resources/knowledgebase/client.py +19 -0
  114. merge/resources/knowledgebase/resources/__init__.py +3 -0
  115. merge/resources/knowledgebase/resources/selective_sync/__init__.py +4 -0
  116. merge/resources/knowledgebase/resources/selective_sync/client.py +201 -0
  117. merge/resources/knowledgebase/resources/selective_sync/raw_client.py +212 -0
  118. merge/resources/knowledgebase/types/__init__.py +24 -0
  119. merge/resources/knowledgebase/types/knowledge_base_sync_selection.py +50 -0
  120. merge/resources/knowledgebase/types/knowledge_base_sync_selection_type.py +7 -0
  121. merge/resources/knowledgebase/types/knowledge_base_sync_selection_type_enum.py +18 -0
  122. merge/resources/knowledgebase/types/operator_enum.py +58 -0
  123. merge/resources/knowledgebase/types/paginated_knowledge_base_sync_selection_list.py +23 -0
  124. merge/resources/knowledgebase/types/selective_sync_condition.py +49 -0
  125. merge/resources/knowledgebase/types/selective_sync_condition_list.py +21 -0
  126. merge/resources/knowledgebase/types/selective_sync_condition_operator.py +7 -0
  127. merge/resources/knowledgebase/types/sync_status.py +5 -0
  128. merge/resources/ticketing/__init__.py +15 -0
  129. merge/resources/ticketing/client.py +19 -0
  130. merge/resources/ticketing/resources/__init__.py +3 -0
  131. merge/resources/ticketing/resources/selective_sync/__init__.py +4 -0
  132. merge/resources/ticketing/resources/selective_sync/client.py +104 -0
  133. merge/resources/ticketing/resources/selective_sync/raw_client.py +103 -0
  134. merge/resources/ticketing/types/__init__.py +12 -0
  135. merge/resources/ticketing/types/operator_enum.py +58 -0
  136. merge/resources/ticketing/types/selective_sync_condition.py +49 -0
  137. merge/resources/ticketing/types/selective_sync_condition_list.py +21 -0
  138. merge/resources/ticketing/types/selective_sync_condition_operator.py +7 -0
  139. merge/resources/ticketing/types/sync_status.py +5 -0
  140. {mergepythonclient-4.1.0.dist-info → mergepythonclient-4.2.1.dist-info}/METADATA +3 -1
  141. {mergepythonclient-4.1.0.dist-info → mergepythonclient-4.2.1.dist-info}/RECORD +143 -55
  142. {mergepythonclient-4.1.0.dist-info → mergepythonclient-4.2.1.dist-info}/LICENSE.md +0 -0
  143. {mergepythonclient-4.1.0.dist-info → mergepythonclient-4.2.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,184 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from json.decoder import JSONDecodeError
5
+
6
+ from .....core.api_error import ApiError
7
+ from .....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from .....core.http_response import AsyncHttpResponse, HttpResponse
9
+ from .....core.parse_error import ParsingError
10
+ from .....core.request_options import RequestOptions
11
+ from .....core.unchecked_base_model import construct_type
12
+ from ...types.label_selection_list import LabelSelectionList
13
+ from ...types.selective_sync_condition_list import SelectiveSyncConditionList
14
+ from pydantic import ValidationError
15
+
16
+
17
+ class RawSelectiveSyncClient:
18
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
19
+ self._client_wrapper = client_wrapper
20
+
21
+ def conditions_list(
22
+ self, *, request_options: typing.Optional[RequestOptions] = None
23
+ ) -> HttpResponse[SelectiveSyncConditionList]:
24
+ """
25
+ Returns a list of `SelectiveSyncCondition` objects.
26
+
27
+ Parameters
28
+ ----------
29
+ request_options : typing.Optional[RequestOptions]
30
+ Request-specific configuration.
31
+
32
+ Returns
33
+ -------
34
+ HttpResponse[SelectiveSyncConditionList]
35
+
36
+ """
37
+ _response = self._client_wrapper.httpx_client.request(
38
+ "email/v1/selective-sync/conditions",
39
+ method="GET",
40
+ request_options=request_options,
41
+ )
42
+ try:
43
+ if 200 <= _response.status_code < 300:
44
+ _data = typing.cast(
45
+ SelectiveSyncConditionList,
46
+ construct_type(
47
+ type_=SelectiveSyncConditionList, # type: ignore
48
+ object_=_response.json(),
49
+ ),
50
+ )
51
+ return HttpResponse(response=_response, data=_data)
52
+ _response_json = _response.json()
53
+ except JSONDecodeError:
54
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
55
+ except ValidationError as e:
56
+ raise ParsingError(
57
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
58
+ )
59
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
60
+
61
+ def labels_list(
62
+ self, *, request_options: typing.Optional[RequestOptions] = None
63
+ ) -> HttpResponse[LabelSelectionList]:
64
+ """
65
+ Returns a list of `LabelSelection` objects.
66
+
67
+ Parameters
68
+ ----------
69
+ request_options : typing.Optional[RequestOptions]
70
+ Request-specific configuration.
71
+
72
+ Returns
73
+ -------
74
+ HttpResponse[LabelSelectionList]
75
+
76
+ """
77
+ _response = self._client_wrapper.httpx_client.request(
78
+ "email/v1/selective-sync/labels",
79
+ method="GET",
80
+ request_options=request_options,
81
+ )
82
+ try:
83
+ if 200 <= _response.status_code < 300:
84
+ _data = typing.cast(
85
+ LabelSelectionList,
86
+ construct_type(
87
+ type_=LabelSelectionList, # type: ignore
88
+ object_=_response.json(),
89
+ ),
90
+ )
91
+ return HttpResponse(response=_response, data=_data)
92
+ _response_json = _response.json()
93
+ except JSONDecodeError:
94
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
95
+ except ValidationError as e:
96
+ raise ParsingError(
97
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
98
+ )
99
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
100
+
101
+
102
+ class AsyncRawSelectiveSyncClient:
103
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
104
+ self._client_wrapper = client_wrapper
105
+
106
+ async def conditions_list(
107
+ self, *, request_options: typing.Optional[RequestOptions] = None
108
+ ) -> AsyncHttpResponse[SelectiveSyncConditionList]:
109
+ """
110
+ Returns a list of `SelectiveSyncCondition` objects.
111
+
112
+ Parameters
113
+ ----------
114
+ request_options : typing.Optional[RequestOptions]
115
+ Request-specific configuration.
116
+
117
+ Returns
118
+ -------
119
+ AsyncHttpResponse[SelectiveSyncConditionList]
120
+
121
+ """
122
+ _response = await self._client_wrapper.httpx_client.request(
123
+ "email/v1/selective-sync/conditions",
124
+ method="GET",
125
+ request_options=request_options,
126
+ )
127
+ try:
128
+ if 200 <= _response.status_code < 300:
129
+ _data = typing.cast(
130
+ SelectiveSyncConditionList,
131
+ construct_type(
132
+ type_=SelectiveSyncConditionList, # type: ignore
133
+ object_=_response.json(),
134
+ ),
135
+ )
136
+ return AsyncHttpResponse(response=_response, data=_data)
137
+ _response_json = _response.json()
138
+ except JSONDecodeError:
139
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
140
+ except ValidationError as e:
141
+ raise ParsingError(
142
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
143
+ )
144
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
145
+
146
+ async def labels_list(
147
+ self, *, request_options: typing.Optional[RequestOptions] = None
148
+ ) -> AsyncHttpResponse[LabelSelectionList]:
149
+ """
150
+ Returns a list of `LabelSelection` objects.
151
+
152
+ Parameters
153
+ ----------
154
+ request_options : typing.Optional[RequestOptions]
155
+ Request-specific configuration.
156
+
157
+ Returns
158
+ -------
159
+ AsyncHttpResponse[LabelSelectionList]
160
+
161
+ """
162
+ _response = await self._client_wrapper.httpx_client.request(
163
+ "email/v1/selective-sync/labels",
164
+ method="GET",
165
+ request_options=request_options,
166
+ )
167
+ try:
168
+ if 200 <= _response.status_code < 300:
169
+ _data = typing.cast(
170
+ LabelSelectionList,
171
+ construct_type(
172
+ type_=LabelSelectionList, # type: ignore
173
+ object_=_response.json(),
174
+ ),
175
+ )
176
+ return AsyncHttpResponse(response=_response, data=_data)
177
+ _response_json = _response.json()
178
+ except JSONDecodeError:
179
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
180
+ except ValidationError as e:
181
+ raise ParsingError(
182
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
183
+ )
184
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
@@ -60,6 +60,8 @@ if typing.TYPE_CHECKING:
60
60
  from .issue import Issue
61
61
  from .issue_status import IssueStatus
62
62
  from .issue_status_enum import IssueStatusEnum
63
+ from .label_selection import LabelSelection
64
+ from .label_selection_list import LabelSelectionList
63
65
  from .language_enum import LanguageEnum
64
66
  from .last_sync_result_enum import LastSyncResultEnum
65
67
  from .link_token import LinkToken
@@ -74,6 +76,7 @@ if typing.TYPE_CHECKING:
74
76
  from .model_permission_deserializer_request import ModelPermissionDeserializerRequest
75
77
  from .multipart_form_field_request import MultipartFormFieldRequest
76
78
  from .multipart_form_field_request_encoding import MultipartFormFieldRequestEncoding
79
+ from .operator_enum import OperatorEnum
77
80
  from .paginated_account_details_and_actions_list import PaginatedAccountDetailsAndActionsList
78
81
  from .paginated_audit_log_event_list import PaginatedAuditLogEventList
79
82
  from .paginated_email_address_list import PaginatedEmailAddressList
@@ -100,6 +103,9 @@ if typing.TYPE_CHECKING:
100
103
  from .request_format_enum import RequestFormatEnum
101
104
  from .response_type_enum import ResponseTypeEnum
102
105
  from .role_enum import RoleEnum
106
+ from .selective_sync_condition import SelectiveSyncCondition
107
+ from .selective_sync_condition_list import SelectiveSyncConditionList
108
+ from .selective_sync_condition_operator import SelectiveSyncConditionOperator
103
109
  from .selective_sync_configurations_usage_enum import SelectiveSyncConfigurationsUsageEnum
104
110
  from .status_fd_5_enum import StatusFd5Enum
105
111
  from .sync_status import SyncStatus
@@ -167,6 +173,8 @@ _dynamic_imports: typing.Dict[str, str] = {
167
173
  "Issue": ".issue",
168
174
  "IssueStatus": ".issue_status",
169
175
  "IssueStatusEnum": ".issue_status_enum",
176
+ "LabelSelection": ".label_selection",
177
+ "LabelSelectionList": ".label_selection_list",
170
178
  "LanguageEnum": ".language_enum",
171
179
  "LastSyncResultEnum": ".last_sync_result_enum",
172
180
  "LinkToken": ".link_token",
@@ -181,6 +189,7 @@ _dynamic_imports: typing.Dict[str, str] = {
181
189
  "ModelPermissionDeserializerRequest": ".model_permission_deserializer_request",
182
190
  "MultipartFormFieldRequest": ".multipart_form_field_request",
183
191
  "MultipartFormFieldRequestEncoding": ".multipart_form_field_request_encoding",
192
+ "OperatorEnum": ".operator_enum",
184
193
  "PaginatedAccountDetailsAndActionsList": ".paginated_account_details_and_actions_list",
185
194
  "PaginatedAuditLogEventList": ".paginated_audit_log_event_list",
186
195
  "PaginatedEmailAddressList": ".paginated_email_address_list",
@@ -207,6 +216,9 @@ _dynamic_imports: typing.Dict[str, str] = {
207
216
  "RequestFormatEnum": ".request_format_enum",
208
217
  "ResponseTypeEnum": ".response_type_enum",
209
218
  "RoleEnum": ".role_enum",
219
+ "SelectiveSyncCondition": ".selective_sync_condition",
220
+ "SelectiveSyncConditionList": ".selective_sync_condition_list",
221
+ "SelectiveSyncConditionOperator": ".selective_sync_condition_operator",
210
222
  "SelectiveSyncConfigurationsUsageEnum": ".selective_sync_configurations_usage_enum",
211
223
  "StatusFd5Enum": ".status_fd_5_enum",
212
224
  "SyncStatus": ".sync_status",
@@ -298,6 +310,8 @@ __all__ = [
298
310
  "Issue",
299
311
  "IssueStatus",
300
312
  "IssueStatusEnum",
313
+ "LabelSelection",
314
+ "LabelSelectionList",
301
315
  "LanguageEnum",
302
316
  "LastSyncResultEnum",
303
317
  "LinkToken",
@@ -312,6 +326,7 @@ __all__ = [
312
326
  "ModelPermissionDeserializerRequest",
313
327
  "MultipartFormFieldRequest",
314
328
  "MultipartFormFieldRequestEncoding",
329
+ "OperatorEnum",
315
330
  "PaginatedAccountDetailsAndActionsList",
316
331
  "PaginatedAuditLogEventList",
317
332
  "PaginatedEmailAddressList",
@@ -338,6 +353,9 @@ __all__ = [
338
353
  "RequestFormatEnum",
339
354
  "ResponseTypeEnum",
340
355
  "RoleEnum",
356
+ "SelectiveSyncCondition",
357
+ "SelectiveSyncConditionList",
358
+ "SelectiveSyncConditionOperator",
341
359
  "SelectiveSyncConfigurationsUsageEnum",
342
360
  "StatusFd5Enum",
343
361
  "SyncStatus",
@@ -0,0 +1,43 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ....core.pydantic_utilities import IS_PYDANTIC_V2
7
+ from ....core.unchecked_base_model import UncheckedBaseModel
8
+
9
+
10
+ class LabelSelection(UncheckedBaseModel):
11
+ remote_id: typing.Optional[str] = pydantic.Field(default=None)
12
+ """
13
+ The label's ID in the third-party system.
14
+ """
15
+
16
+ name: typing.Optional[str] = pydantic.Field(default=None)
17
+ """
18
+ The label's name.
19
+ """
20
+
21
+ label_type: typing.Optional[str] = pydantic.Field(default=None)
22
+ """
23
+ The label's type.
24
+ """
25
+
26
+ parent_remote_id: typing.Optional[str] = pydantic.Field(default=None)
27
+ """
28
+ The parent label's ID in the third-party system. Null for top-level labels.
29
+ """
30
+
31
+ parent_name: typing.Optional[str] = pydantic.Field(default=None)
32
+ """
33
+ The parent label's name. Null for top-level labels.
34
+ """
35
+
36
+ if IS_PYDANTIC_V2:
37
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
38
+ else:
39
+
40
+ class Config:
41
+ frozen = True
42
+ smart_union = True
43
+ extra = pydantic.Extra.allow
@@ -0,0 +1,21 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ....core.pydantic_utilities import IS_PYDANTIC_V2
7
+ from ....core.unchecked_base_model import UncheckedBaseModel
8
+ from .label_selection import LabelSelection
9
+
10
+
11
+ class LabelSelectionList(UncheckedBaseModel):
12
+ results: typing.List[LabelSelection]
13
+
14
+ if IS_PYDANTIC_V2:
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
16
+ else:
17
+
18
+ class Config:
19
+ frozen = True
20
+ smart_union = True
21
+ extra = pydantic.Extra.allow
@@ -0,0 +1,58 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from ....core import enum
6
+
7
+ T_Result = typing.TypeVar("T_Result")
8
+
9
+
10
+ class OperatorEnum(enum.StrEnum):
11
+ CONTAINS = "CONTAINS"
12
+ EQUALS = "EQUALS"
13
+ GREATER_THAN = "GREATER_THAN"
14
+ GREATER_THAN_OR_EQUAL_TO = "GREATER_THAN_OR_EQUAL_TO"
15
+ HAS_ALL_OF = "HAS_ALL_OF"
16
+ HAS_NONE_OF = "HAS_NONE_OF"
17
+ IS_ONE_OF = "IS_ONE_OF"
18
+ LESS_THAN = "LESS_THAN"
19
+ LESS_THAN_OR_EQUAL_TO = "LESS_THAN_OR_EQUAL_TO"
20
+ NOT_EQUALS = "NOT_EQUALS"
21
+ WITHIN = "WITHIN"
22
+
23
+ def visit(
24
+ self,
25
+ contains: typing.Callable[[], T_Result],
26
+ equals: typing.Callable[[], T_Result],
27
+ greater_than: typing.Callable[[], T_Result],
28
+ greater_than_or_equal_to: typing.Callable[[], T_Result],
29
+ has_all_of: typing.Callable[[], T_Result],
30
+ has_none_of: typing.Callable[[], T_Result],
31
+ is_one_of: typing.Callable[[], T_Result],
32
+ less_than: typing.Callable[[], T_Result],
33
+ less_than_or_equal_to: typing.Callable[[], T_Result],
34
+ not_equals: typing.Callable[[], T_Result],
35
+ within: typing.Callable[[], T_Result],
36
+ ) -> T_Result:
37
+ if self is OperatorEnum.CONTAINS:
38
+ return contains()
39
+ if self is OperatorEnum.EQUALS:
40
+ return equals()
41
+ if self is OperatorEnum.GREATER_THAN:
42
+ return greater_than()
43
+ if self is OperatorEnum.GREATER_THAN_OR_EQUAL_TO:
44
+ return greater_than_or_equal_to()
45
+ if self is OperatorEnum.HAS_ALL_OF:
46
+ return has_all_of()
47
+ if self is OperatorEnum.HAS_NONE_OF:
48
+ return has_none_of()
49
+ if self is OperatorEnum.IS_ONE_OF:
50
+ return is_one_of()
51
+ if self is OperatorEnum.LESS_THAN:
52
+ return less_than()
53
+ if self is OperatorEnum.LESS_THAN_OR_EQUAL_TO:
54
+ return less_than_or_equal_to()
55
+ if self is OperatorEnum.NOT_EQUALS:
56
+ return not_equals()
57
+ if self is OperatorEnum.WITHIN:
58
+ return within()
@@ -0,0 +1,49 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ....core.pydantic_utilities import IS_PYDANTIC_V2
7
+ from ....core.unchecked_base_model import UncheckedBaseModel
8
+ from .selective_sync_condition_operator import SelectiveSyncConditionOperator
9
+
10
+
11
+ class SelectiveSyncCondition(UncheckedBaseModel):
12
+ id: str = pydantic.Field()
13
+ """
14
+ The Merge ID of the filter.
15
+ """
16
+
17
+ common_model: str = pydantic.Field()
18
+ """
19
+ The common model the filter applies to.
20
+ """
21
+
22
+ normalized_key_name: str = pydantic.Field()
23
+ """
24
+ The Merge field the filter applies to.
25
+ """
26
+
27
+ remote_key_name: typing.Optional[str] = pydantic.Field(default=None)
28
+ """
29
+ The third-party API's name for the filtered field.
30
+ """
31
+
32
+ operator: SelectiveSyncConditionOperator = pydantic.Field()
33
+ """
34
+ How the value is compared.
35
+ """
36
+
37
+ value: typing.Dict[str, typing.Any] = pydantic.Field()
38
+ """
39
+ The value the field is compared against.
40
+ """
41
+
42
+ if IS_PYDANTIC_V2:
43
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
44
+ else:
45
+
46
+ class Config:
47
+ frozen = True
48
+ smart_union = True
49
+ extra = pydantic.Extra.allow
@@ -0,0 +1,21 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ....core.pydantic_utilities import IS_PYDANTIC_V2
7
+ from ....core.unchecked_base_model import UncheckedBaseModel
8
+ from .selective_sync_condition import SelectiveSyncCondition
9
+
10
+
11
+ class SelectiveSyncConditionList(UncheckedBaseModel):
12
+ results: typing.List[SelectiveSyncCondition]
13
+
14
+ if IS_PYDANTIC_V2:
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
16
+ else:
17
+
18
+ class Config:
19
+ frozen = True
20
+ smart_union = True
21
+ extra = pydantic.Extra.allow
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from .operator_enum import OperatorEnum
6
+
7
+ SelectiveSyncConditionOperator = typing.Union[OperatorEnum, str]
@@ -29,6 +29,11 @@ class SyncStatus(UncheckedBaseModel):
29
29
  last_sync_result: typing.Optional[SyncStatusLastSyncResult] = None
30
30
  last_sync_finished: typing.Optional[dt.datetime] = None
31
31
  data_fresh_as_of: typing.Optional[dt.datetime] = None
32
+ historical_data_since: typing.Optional[dt.datetime] = pydantic.Field(default=None)
33
+ """
34
+ The earliest point this model has complete historical data for, based on each record's modified date in the third-party platform. Records modified before this time have not been fully synced. A model synced over its full history reaches back to 1900-01-01, unless there's a selective sync filter. Null until the first sync completes.
35
+ """
36
+
32
37
  status: SyncStatusStatus
33
38
  sync_status_reason: typing.Optional[SyncStatusSyncStatusReason] = pydantic.Field(default=None)
34
39
  """
@@ -57,6 +57,9 @@ if typing.TYPE_CHECKING:
57
57
  FileRequestPermissionsItem,
58
58
  FileStorageFileResponse,
59
59
  FileStorageFolderResponse,
60
+ FileStorageSyncSelection,
61
+ FileStorageSyncSelectionType,
62
+ FileStorageSyncSelectionTypeEnum,
60
63
  Folder,
61
64
  FolderDrive,
62
65
  FolderParentFolder,
@@ -75,6 +78,8 @@ if typing.TYPE_CHECKING:
75
78
  Issue,
76
79
  IssueStatus,
77
80
  IssueStatusEnum,
81
+ LabelSelection,
82
+ LabelSelectionList,
78
83
  LanguageEnum,
79
84
  LastSyncResultEnum,
80
85
  LinkToken,
@@ -86,11 +91,13 @@ if typing.TYPE_CHECKING:
86
91
  ModelPermissionDeserializerRequest,
87
92
  MultipartFormFieldRequest,
88
93
  MultipartFormFieldRequestEncoding,
94
+ OperatorEnum,
89
95
  PaginatedAccountDetailsAndActionsList,
90
96
  PaginatedAuditLogEventList,
91
97
  PaginatedDownloadRequestMetaList,
92
98
  PaginatedDriveList,
93
99
  PaginatedFileList,
100
+ PaginatedFileStorageSyncSelectionList,
94
101
  PaginatedFolderList,
95
102
  PaginatedGroupList,
96
103
  PaginatedIssueList,
@@ -119,6 +126,9 @@ if typing.TYPE_CHECKING:
119
126
  ResponseTypeEnum,
120
127
  RoleEnum,
121
128
  RolesEnum,
129
+ SelectiveSyncCondition,
130
+ SelectiveSyncConditionList,
131
+ SelectiveSyncConditionOperator,
122
132
  SelectiveSyncConfigurationsUsageEnum,
123
133
  StatusFd5Enum,
124
134
  SyncStatus,
@@ -163,6 +173,7 @@ if typing.TYPE_CHECKING:
163
173
  passthrough,
164
174
  regenerate_key,
165
175
  scopes,
176
+ selective_sync,
166
177
  sync_status,
167
178
  users,
168
179
  webhook_receivers,
@@ -219,6 +230,9 @@ _dynamic_imports: typing.Dict[str, str] = {
219
230
  "FileRequestPermissionsItem": ".types",
220
231
  "FileStorageFileResponse": ".types",
221
232
  "FileStorageFolderResponse": ".types",
233
+ "FileStorageSyncSelection": ".types",
234
+ "FileStorageSyncSelectionType": ".types",
235
+ "FileStorageSyncSelectionTypeEnum": ".types",
222
236
  "FilesDownloadRequestMetaListRequestOrderBy": ".resources",
223
237
  "FilesListRequestExpandItem": ".resources",
224
238
  "FilesListRequestOrderBy": ".resources",
@@ -246,6 +260,8 @@ _dynamic_imports: typing.Dict[str, str] = {
246
260
  "IssueStatus": ".types",
247
261
  "IssueStatusEnum": ".types",
248
262
  "IssuesListRequestStatus": ".resources",
263
+ "LabelSelection": ".types",
264
+ "LabelSelectionList": ".types",
249
265
  "LanguageEnum": ".types",
250
266
  "LastSyncResultEnum": ".types",
251
267
  "LinkToken": ".types",
@@ -258,11 +274,13 @@ _dynamic_imports: typing.Dict[str, str] = {
258
274
  "ModelPermissionDeserializerRequest": ".types",
259
275
  "MultipartFormFieldRequest": ".types",
260
276
  "MultipartFormFieldRequestEncoding": ".types",
277
+ "OperatorEnum": ".types",
261
278
  "PaginatedAccountDetailsAndActionsList": ".types",
262
279
  "PaginatedAuditLogEventList": ".types",
263
280
  "PaginatedDownloadRequestMetaList": ".types",
264
281
  "PaginatedDriveList": ".types",
265
282
  "PaginatedFileList": ".types",
283
+ "PaginatedFileStorageSyncSelectionList": ".types",
266
284
  "PaginatedFolderList": ".types",
267
285
  "PaginatedGroupList": ".types",
268
286
  "PaginatedIssueList": ".types",
@@ -291,6 +309,9 @@ _dynamic_imports: typing.Dict[str, str] = {
291
309
  "ResponseTypeEnum": ".types",
292
310
  "RoleEnum": ".types",
293
311
  "RolesEnum": ".types",
312
+ "SelectiveSyncCondition": ".types",
313
+ "SelectiveSyncConditionList": ".types",
314
+ "SelectiveSyncConditionOperator": ".types",
294
315
  "SelectiveSyncConfigurationsUsageEnum": ".types",
295
316
  "StatusFd5Enum": ".types",
296
317
  "SyncStatus": ".types",
@@ -322,6 +343,7 @@ _dynamic_imports: typing.Dict[str, str] = {
322
343
  "passthrough": ".resources",
323
344
  "regenerate_key": ".resources",
324
345
  "scopes": ".resources",
346
+ "selective_sync": ".resources",
325
347
  "sync_status": ".resources",
326
348
  "users": ".resources",
327
349
  "webhook_receivers": ".resources",
@@ -401,6 +423,9 @@ __all__ = [
401
423
  "FileRequestPermissionsItem",
402
424
  "FileStorageFileResponse",
403
425
  "FileStorageFolderResponse",
426
+ "FileStorageSyncSelection",
427
+ "FileStorageSyncSelectionType",
428
+ "FileStorageSyncSelectionTypeEnum",
404
429
  "FilesDownloadRequestMetaListRequestOrderBy",
405
430
  "FilesListRequestExpandItem",
406
431
  "FilesListRequestOrderBy",
@@ -428,6 +453,8 @@ __all__ = [
428
453
  "IssueStatus",
429
454
  "IssueStatusEnum",
430
455
  "IssuesListRequestStatus",
456
+ "LabelSelection",
457
+ "LabelSelectionList",
431
458
  "LanguageEnum",
432
459
  "LastSyncResultEnum",
433
460
  "LinkToken",
@@ -440,11 +467,13 @@ __all__ = [
440
467
  "ModelPermissionDeserializerRequest",
441
468
  "MultipartFormFieldRequest",
442
469
  "MultipartFormFieldRequestEncoding",
470
+ "OperatorEnum",
443
471
  "PaginatedAccountDetailsAndActionsList",
444
472
  "PaginatedAuditLogEventList",
445
473
  "PaginatedDownloadRequestMetaList",
446
474
  "PaginatedDriveList",
447
475
  "PaginatedFileList",
476
+ "PaginatedFileStorageSyncSelectionList",
448
477
  "PaginatedFolderList",
449
478
  "PaginatedGroupList",
450
479
  "PaginatedIssueList",
@@ -473,6 +502,9 @@ __all__ = [
473
502
  "ResponseTypeEnum",
474
503
  "RoleEnum",
475
504
  "RolesEnum",
505
+ "SelectiveSyncCondition",
506
+ "SelectiveSyncConditionList",
507
+ "SelectiveSyncConditionOperator",
476
508
  "SelectiveSyncConfigurationsUsageEnum",
477
509
  "StatusFd5Enum",
478
510
  "SyncStatus",
@@ -504,6 +536,7 @@ __all__ = [
504
536
  "passthrough",
505
537
  "regenerate_key",
506
538
  "scopes",
539
+ "selective_sync",
507
540
  "sync_status",
508
541
  "users",
509
542
  "webhook_receivers",
@@ -33,6 +33,7 @@ if typing.TYPE_CHECKING:
33
33
  from .resources.passthrough.client import PassthroughClient
34
34
  from .resources.regenerate_key.client import AsyncRegenerateKeyClient, RegenerateKeyClient
35
35
  from .resources.scopes.client import AsyncScopesClient, ScopesClient
36
+ from .resources.selective_sync.client import AsyncSelectiveSyncClient, SelectiveSyncClient
36
37
  from .resources.sync_status.client import AsyncSyncStatusClient, SyncStatusClient
37
38
  from .resources.users.client import AsyncUsersClient, UsersClient
38
39
  from .resources.webhook_receivers.client import AsyncWebhookReceiversClient, WebhookReceiversClient
@@ -62,6 +63,7 @@ class FilestorageClient:
62
63
  self._linked_accounts: typing.Optional[LinkedAccountsClient] = None
63
64
  self._passthrough: typing.Optional[PassthroughClient] = None
64
65
  self._regenerate_key: typing.Optional[RegenerateKeyClient] = None
66
+ self._selective_sync: typing.Optional[SelectiveSyncClient] = None
65
67
  self._sync_status: typing.Optional[SyncStatusClient] = None
66
68
  self._force_resync: typing.Optional[ForceResyncClient] = None
67
69
  self._users: typing.Optional[UsersClient] = None
@@ -226,6 +228,14 @@ class FilestorageClient:
226
228
  self._regenerate_key = RegenerateKeyClient(client_wrapper=self._client_wrapper)
227
229
  return self._regenerate_key
228
230
 
231
+ @property
232
+ def selective_sync(self):
233
+ if self._selective_sync is None:
234
+ from .resources.selective_sync.client import SelectiveSyncClient # noqa: E402
235
+
236
+ self._selective_sync = SelectiveSyncClient(client_wrapper=self._client_wrapper)
237
+ return self._selective_sync
238
+
229
239
  @property
230
240
  def sync_status(self):
231
241
  if self._sync_status is None:
@@ -283,6 +293,7 @@ class AsyncFilestorageClient:
283
293
  resources_filestorage_resources_passthrough_client_AsyncPassthroughClient
284
294
  ] = None
285
295
  self._regenerate_key: typing.Optional[AsyncRegenerateKeyClient] = None
296
+ self._selective_sync: typing.Optional[AsyncSelectiveSyncClient] = None
286
297
  self._sync_status: typing.Optional[AsyncSyncStatusClient] = None
287
298
  self._force_resync: typing.Optional[AsyncForceResyncClient] = None
288
299
  self._users: typing.Optional[AsyncUsersClient] = None
@@ -447,6 +458,14 @@ class AsyncFilestorageClient:
447
458
  self._regenerate_key = AsyncRegenerateKeyClient(client_wrapper=self._client_wrapper)
448
459
  return self._regenerate_key
449
460
 
461
+ @property
462
+ def selective_sync(self):
463
+ if self._selective_sync is None:
464
+ from .resources.selective_sync.client import AsyncSelectiveSyncClient # noqa: E402
465
+
466
+ self._selective_sync = AsyncSelectiveSyncClient(client_wrapper=self._client_wrapper)
467
+ return self._selective_sync
468
+
450
469
  @property
451
470
  def sync_status(self):
452
471
  if self._sync_status is None: