mergepythonclient 4.0.0__py3-none-any.whl → 4.2.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.
Files changed (163) hide show
  1. merge/core/client_wrapper.py +2 -2
  2. merge/resources/accounting/__init__.py +21 -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 +18 -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 +7 -0
  14. merge/resources/accounting/types/sync_status_reason_enum.py +20 -0
  15. merge/resources/accounting/types/sync_status_sync_status_reason.py +7 -0
  16. merge/resources/ats/__init__.py +21 -0
  17. merge/resources/ats/client.py +19 -0
  18. merge/resources/ats/resources/__init__.py +3 -0
  19. merge/resources/ats/resources/selective_sync/__init__.py +4 -0
  20. merge/resources/ats/resources/selective_sync/client.py +104 -0
  21. merge/resources/ats/resources/selective_sync/raw_client.py +103 -0
  22. merge/resources/ats/types/__init__.py +18 -0
  23. merge/resources/ats/types/operator_enum.py +58 -0
  24. merge/resources/ats/types/selective_sync_condition.py +49 -0
  25. merge/resources/ats/types/selective_sync_condition_list.py +21 -0
  26. merge/resources/ats/types/selective_sync_condition_operator.py +7 -0
  27. merge/resources/ats/types/sync_status.py +7 -0
  28. merge/resources/ats/types/sync_status_reason_enum.py +20 -0
  29. merge/resources/ats/types/sync_status_sync_status_reason.py +7 -0
  30. merge/resources/calendar/__init__.py +21 -0
  31. merge/resources/calendar/client.py +19 -0
  32. merge/resources/calendar/resources/__init__.py +3 -0
  33. merge/resources/calendar/resources/selective_sync/__init__.py +4 -0
  34. merge/resources/calendar/resources/selective_sync/client.py +104 -0
  35. merge/resources/calendar/resources/selective_sync/raw_client.py +103 -0
  36. merge/resources/calendar/types/__init__.py +18 -0
  37. merge/resources/calendar/types/operator_enum.py +58 -0
  38. merge/resources/calendar/types/selective_sync_condition.py +49 -0
  39. merge/resources/calendar/types/selective_sync_condition_list.py +21 -0
  40. merge/resources/calendar/types/selective_sync_condition_operator.py +7 -0
  41. merge/resources/calendar/types/sync_status.py +7 -0
  42. merge/resources/calendar/types/sync_status_reason_enum.py +20 -0
  43. merge/resources/calendar/types/sync_status_sync_status_reason.py +7 -0
  44. merge/resources/chat/__init__.py +39 -0
  45. merge/resources/chat/client.py +19 -0
  46. merge/resources/chat/resources/__init__.py +3 -0
  47. merge/resources/chat/resources/selective_sync/__init__.py +4 -0
  48. merge/resources/chat/resources/selective_sync/client.py +264 -0
  49. merge/resources/chat/resources/selective_sync/raw_client.py +293 -0
  50. merge/resources/chat/types/__init__.py +36 -0
  51. merge/resources/chat/types/chat_sync_selection.py +50 -0
  52. merge/resources/chat/types/chat_sync_selection_type.py +7 -0
  53. merge/resources/chat/types/chat_sync_selection_type_enum.py +18 -0
  54. merge/resources/chat/types/label_selection.py +43 -0
  55. merge/resources/chat/types/label_selection_list.py +21 -0
  56. merge/resources/chat/types/operator_enum.py +58 -0
  57. merge/resources/chat/types/paginated_chat_sync_selection_list.py +23 -0
  58. merge/resources/chat/types/selective_sync_condition.py +49 -0
  59. merge/resources/chat/types/selective_sync_condition_list.py +21 -0
  60. merge/resources/chat/types/selective_sync_condition_operator.py +7 -0
  61. merge/resources/chat/types/sync_status.py +7 -0
  62. merge/resources/chat/types/sync_status_reason_enum.py +20 -0
  63. merge/resources/chat/types/sync_status_sync_status_reason.py +7 -0
  64. merge/resources/crm/__init__.py +21 -0
  65. merge/resources/crm/client.py +19 -0
  66. merge/resources/crm/resources/__init__.py +3 -0
  67. merge/resources/crm/resources/selective_sync/__init__.py +4 -0
  68. merge/resources/crm/resources/selective_sync/client.py +104 -0
  69. merge/resources/crm/resources/selective_sync/raw_client.py +103 -0
  70. merge/resources/crm/types/__init__.py +18 -0
  71. merge/resources/crm/types/operator_enum.py +58 -0
  72. merge/resources/crm/types/selective_sync_condition.py +49 -0
  73. merge/resources/crm/types/selective_sync_condition_list.py +21 -0
  74. merge/resources/crm/types/selective_sync_condition_operator.py +7 -0
  75. merge/resources/crm/types/sync_status.py +7 -0
  76. merge/resources/crm/types/sync_status_reason_enum.py +20 -0
  77. merge/resources/crm/types/sync_status_sync_status_reason.py +7 -0
  78. merge/resources/email/__init__.py +27 -0
  79. merge/resources/email/client.py +19 -0
  80. merge/resources/email/resources/__init__.py +3 -0
  81. merge/resources/email/resources/selective_sync/__init__.py +4 -0
  82. merge/resources/email/resources/selective_sync/client.py +167 -0
  83. merge/resources/email/resources/selective_sync/raw_client.py +184 -0
  84. merge/resources/email/types/__init__.py +24 -0
  85. merge/resources/email/types/label_selection.py +43 -0
  86. merge/resources/email/types/label_selection_list.py +21 -0
  87. merge/resources/email/types/operator_enum.py +58 -0
  88. merge/resources/email/types/selective_sync_condition.py +49 -0
  89. merge/resources/email/types/selective_sync_condition_list.py +21 -0
  90. merge/resources/email/types/selective_sync_condition_operator.py +7 -0
  91. merge/resources/email/types/sync_status.py +7 -0
  92. merge/resources/email/types/sync_status_reason_enum.py +20 -0
  93. merge/resources/email/types/sync_status_sync_status_reason.py +7 -0
  94. merge/resources/filestorage/__init__.py +39 -0
  95. merge/resources/filestorage/client.py +19 -0
  96. merge/resources/filestorage/resources/__init__.py +3 -0
  97. merge/resources/filestorage/resources/selective_sync/__init__.py +4 -0
  98. merge/resources/filestorage/resources/selective_sync/client.py +264 -0
  99. merge/resources/filestorage/resources/selective_sync/raw_client.py +293 -0
  100. merge/resources/filestorage/types/__init__.py +36 -0
  101. merge/resources/filestorage/types/file_storage_sync_selection.py +50 -0
  102. merge/resources/filestorage/types/file_storage_sync_selection_type.py +7 -0
  103. merge/resources/filestorage/types/file_storage_sync_selection_type_enum.py +26 -0
  104. merge/resources/filestorage/types/label_selection.py +43 -0
  105. merge/resources/filestorage/types/label_selection_list.py +21 -0
  106. merge/resources/filestorage/types/operator_enum.py +58 -0
  107. merge/resources/filestorage/types/paginated_file_storage_sync_selection_list.py +23 -0
  108. merge/resources/filestorage/types/selective_sync_condition.py +49 -0
  109. merge/resources/filestorage/types/selective_sync_condition_list.py +21 -0
  110. merge/resources/filestorage/types/selective_sync_condition_operator.py +7 -0
  111. merge/resources/filestorage/types/sync_status.py +7 -0
  112. merge/resources/filestorage/types/sync_status_reason_enum.py +20 -0
  113. merge/resources/filestorage/types/sync_status_sync_status_reason.py +7 -0
  114. merge/resources/hris/__init__.py +21 -0
  115. merge/resources/hris/client.py +19 -0
  116. merge/resources/hris/resources/__init__.py +3 -0
  117. merge/resources/hris/resources/selective_sync/__init__.py +4 -0
  118. merge/resources/hris/resources/selective_sync/client.py +104 -0
  119. merge/resources/hris/resources/selective_sync/raw_client.py +103 -0
  120. merge/resources/hris/types/__init__.py +18 -0
  121. merge/resources/hris/types/operator_enum.py +58 -0
  122. merge/resources/hris/types/selective_sync_condition.py +49 -0
  123. merge/resources/hris/types/selective_sync_condition_list.py +21 -0
  124. merge/resources/hris/types/selective_sync_condition_operator.py +7 -0
  125. merge/resources/hris/types/sync_status.py +7 -0
  126. merge/resources/hris/types/sync_status_reason_enum.py +20 -0
  127. merge/resources/hris/types/sync_status_sync_status_reason.py +7 -0
  128. merge/resources/knowledgebase/__init__.py +33 -0
  129. merge/resources/knowledgebase/client.py +19 -0
  130. merge/resources/knowledgebase/resources/__init__.py +3 -0
  131. merge/resources/knowledgebase/resources/selective_sync/__init__.py +4 -0
  132. merge/resources/knowledgebase/resources/selective_sync/client.py +201 -0
  133. merge/resources/knowledgebase/resources/selective_sync/raw_client.py +212 -0
  134. merge/resources/knowledgebase/types/__init__.py +30 -0
  135. merge/resources/knowledgebase/types/knowledge_base_sync_selection.py +50 -0
  136. merge/resources/knowledgebase/types/knowledge_base_sync_selection_type.py +7 -0
  137. merge/resources/knowledgebase/types/knowledge_base_sync_selection_type_enum.py +18 -0
  138. merge/resources/knowledgebase/types/operator_enum.py +58 -0
  139. merge/resources/knowledgebase/types/paginated_knowledge_base_sync_selection_list.py +23 -0
  140. merge/resources/knowledgebase/types/selective_sync_condition.py +49 -0
  141. merge/resources/knowledgebase/types/selective_sync_condition_list.py +21 -0
  142. merge/resources/knowledgebase/types/selective_sync_condition_operator.py +7 -0
  143. merge/resources/knowledgebase/types/sync_status.py +7 -0
  144. merge/resources/knowledgebase/types/sync_status_reason_enum.py +20 -0
  145. merge/resources/knowledgebase/types/sync_status_sync_status_reason.py +7 -0
  146. merge/resources/ticketing/__init__.py +21 -0
  147. merge/resources/ticketing/client.py +19 -0
  148. merge/resources/ticketing/resources/__init__.py +3 -0
  149. merge/resources/ticketing/resources/selective_sync/__init__.py +4 -0
  150. merge/resources/ticketing/resources/selective_sync/client.py +104 -0
  151. merge/resources/ticketing/resources/selective_sync/raw_client.py +103 -0
  152. merge/resources/ticketing/types/__init__.py +18 -0
  153. merge/resources/ticketing/types/operator_enum.py +58 -0
  154. merge/resources/ticketing/types/selective_sync_condition.py +49 -0
  155. merge/resources/ticketing/types/selective_sync_condition_list.py +21 -0
  156. merge/resources/ticketing/types/selective_sync_condition_operator.py +7 -0
  157. merge/resources/ticketing/types/sync_status.py +7 -0
  158. merge/resources/ticketing/types/sync_status_reason_enum.py +20 -0
  159. merge/resources/ticketing/types/sync_status_sync_status_reason.py +7 -0
  160. {mergepythonclient-4.0.0.dist-info → mergepythonclient-4.2.0.dist-info}/METADATA +2 -1
  161. {mergepythonclient-4.0.0.dist-info → mergepythonclient-4.2.0.dist-info}/RECORD +163 -55
  162. {mergepythonclient-4.0.0.dist-info → mergepythonclient-4.2.0.dist-info}/LICENSE.md +0 -0
  163. {mergepythonclient-4.0.0.dist-info → mergepythonclient-4.2.0.dist-info}/WHEEL +0 -0
@@ -77,6 +77,7 @@ if typing.TYPE_CHECKING:
77
77
  ModelPermissionDeserializerRequest,
78
78
  MultipartFormFieldRequest,
79
79
  MultipartFormFieldRequestEncoding,
80
+ OperatorEnum,
80
81
  PaginatedAccountDetailsAndActionsList,
81
82
  PaginatedAuditLogEventList,
82
83
  PaginatedCalendarList,
@@ -108,13 +109,18 @@ if typing.TYPE_CHECKING:
108
109
  RoleEnum,
109
110
  RolesEnum,
110
111
  RsvpEnum,
112
+ SelectiveSyncCondition,
113
+ SelectiveSyncConditionList,
114
+ SelectiveSyncConditionOperator,
111
115
  SelectiveSyncConfigurationsUsageEnum,
112
116
  Series,
113
117
  SeriesFieldMappings,
114
118
  StatusFd5Enum,
115
119
  SyncStatus,
116
120
  SyncStatusLastSyncResult,
121
+ SyncStatusReasonEnum,
117
122
  SyncStatusStatus,
123
+ SyncStatusSyncStatusReason,
118
124
  User,
119
125
  UserFieldMappings,
120
126
  ValidationProblemSource,
@@ -151,6 +157,7 @@ if typing.TYPE_CHECKING:
151
157
  passthrough,
152
158
  regenerate_key,
153
159
  scopes,
160
+ selective_sync,
154
161
  series,
155
162
  sync_status,
156
163
  users,
@@ -238,6 +245,7 @@ _dynamic_imports: typing.Dict[str, str] = {
238
245
  "ModelPermissionDeserializerRequest": ".types",
239
246
  "MultipartFormFieldRequest": ".types",
240
247
  "MultipartFormFieldRequestEncoding": ".types",
248
+ "OperatorEnum": ".types",
241
249
  "PaginatedAccountDetailsAndActionsList": ".types",
242
250
  "PaginatedAuditLogEventList": ".types",
243
251
  "PaginatedCalendarList": ".types",
@@ -269,13 +277,18 @@ _dynamic_imports: typing.Dict[str, str] = {
269
277
  "RoleEnum": ".types",
270
278
  "RolesEnum": ".types",
271
279
  "RsvpEnum": ".types",
280
+ "SelectiveSyncCondition": ".types",
281
+ "SelectiveSyncConditionList": ".types",
282
+ "SelectiveSyncConditionOperator": ".types",
272
283
  "SelectiveSyncConfigurationsUsageEnum": ".types",
273
284
  "Series": ".types",
274
285
  "SeriesFieldMappings": ".types",
275
286
  "StatusFd5Enum": ".types",
276
287
  "SyncStatus": ".types",
277
288
  "SyncStatusLastSyncResult": ".types",
289
+ "SyncStatusReasonEnum": ".types",
278
290
  "SyncStatusStatus": ".types",
291
+ "SyncStatusSyncStatusReason": ".types",
279
292
  "User": ".types",
280
293
  "UserFieldMappings": ".types",
281
294
  "ValidationProblemSource": ".types",
@@ -299,6 +312,7 @@ _dynamic_imports: typing.Dict[str, str] = {
299
312
  "passthrough": ".resources",
300
313
  "regenerate_key": ".resources",
301
314
  "scopes": ".resources",
315
+ "selective_sync": ".resources",
302
316
  "series": ".resources",
303
317
  "sync_status": ".resources",
304
318
  "users": ".resources",
@@ -409,6 +423,7 @@ __all__ = [
409
423
  "ModelPermissionDeserializerRequest",
410
424
  "MultipartFormFieldRequest",
411
425
  "MultipartFormFieldRequestEncoding",
426
+ "OperatorEnum",
412
427
  "PaginatedAccountDetailsAndActionsList",
413
428
  "PaginatedAuditLogEventList",
414
429
  "PaginatedCalendarList",
@@ -440,13 +455,18 @@ __all__ = [
440
455
  "RoleEnum",
441
456
  "RolesEnum",
442
457
  "RsvpEnum",
458
+ "SelectiveSyncCondition",
459
+ "SelectiveSyncConditionList",
460
+ "SelectiveSyncConditionOperator",
443
461
  "SelectiveSyncConfigurationsUsageEnum",
444
462
  "Series",
445
463
  "SeriesFieldMappings",
446
464
  "StatusFd5Enum",
447
465
  "SyncStatus",
448
466
  "SyncStatusLastSyncResult",
467
+ "SyncStatusReasonEnum",
449
468
  "SyncStatusStatus",
469
+ "SyncStatusSyncStatusReason",
450
470
  "User",
451
471
  "UserFieldMappings",
452
472
  "ValidationProblemSource",
@@ -470,6 +490,7 @@ __all__ = [
470
490
  "passthrough",
471
491
  "regenerate_key",
472
492
  "scopes",
493
+ "selective_sync",
473
494
  "series",
474
495
  "sync_status",
475
496
  "users",
@@ -32,6 +32,7 @@ if typing.TYPE_CHECKING:
32
32
  from .resources.passthrough.client import PassthroughClient
33
33
  from .resources.regenerate_key.client import AsyncRegenerateKeyClient, RegenerateKeyClient
34
34
  from .resources.scopes.client import AsyncScopesClient, ScopesClient
35
+ from .resources.selective_sync.client import AsyncSelectiveSyncClient, SelectiveSyncClient
35
36
  from .resources.series.client import AsyncSeriesClient, SeriesClient
36
37
  from .resources.sync_status.client import AsyncSyncStatusClient, SyncStatusClient
37
38
  from .resources.users.client import AsyncUsersClient, UsersClient
@@ -61,6 +62,7 @@ class CalendarClient:
61
62
  self._linked_accounts: typing.Optional[LinkedAccountsClient] = None
62
63
  self._passthrough: typing.Optional[PassthroughClient] = None
63
64
  self._regenerate_key: typing.Optional[RegenerateKeyClient] = None
65
+ self._selective_sync: typing.Optional[SelectiveSyncClient] = None
64
66
  self._series: typing.Optional[SeriesClient] = None
65
67
  self._sync_status: typing.Optional[SyncStatusClient] = None
66
68
  self._force_resync: typing.Optional[ForceResyncClient] = None
@@ -218,6 +220,14 @@ class CalendarClient:
218
220
  self._regenerate_key = RegenerateKeyClient(client_wrapper=self._client_wrapper)
219
221
  return self._regenerate_key
220
222
 
223
+ @property
224
+ def selective_sync(self):
225
+ if self._selective_sync is None:
226
+ from .resources.selective_sync.client import SelectiveSyncClient # noqa: E402
227
+
228
+ self._selective_sync = SelectiveSyncClient(client_wrapper=self._client_wrapper)
229
+ return self._selective_sync
230
+
221
231
  @property
222
232
  def series(self):
223
233
  if self._series is None:
@@ -282,6 +292,7 @@ class AsyncCalendarClient:
282
292
  None
283
293
  )
284
294
  self._regenerate_key: typing.Optional[AsyncRegenerateKeyClient] = None
295
+ self._selective_sync: typing.Optional[AsyncSelectiveSyncClient] = None
285
296
  self._series: typing.Optional[AsyncSeriesClient] = None
286
297
  self._sync_status: typing.Optional[AsyncSyncStatusClient] = None
287
298
  self._force_resync: typing.Optional[AsyncForceResyncClient] = None
@@ -439,6 +450,14 @@ class AsyncCalendarClient:
439
450
  self._regenerate_key = AsyncRegenerateKeyClient(client_wrapper=self._client_wrapper)
440
451
  return self._regenerate_key
441
452
 
453
+ @property
454
+ def selective_sync(self):
455
+ if self._selective_sync is None:
456
+ from .resources.selective_sync.client import AsyncSelectiveSyncClient # noqa: E402
457
+
458
+ self._selective_sync = AsyncSelectiveSyncClient(client_wrapper=self._client_wrapper)
459
+ return self._selective_sync
460
+
442
461
  @property
443
462
  def series(self):
444
463
  if self._series is None:
@@ -25,6 +25,7 @@ if typing.TYPE_CHECKING:
25
25
  passthrough,
26
26
  regenerate_key,
27
27
  scopes,
28
+ selective_sync,
28
29
  series,
29
30
  sync_status,
30
31
  users,
@@ -71,6 +72,7 @@ _dynamic_imports: typing.Dict[str, str] = {
71
72
  "passthrough": ".passthrough",
72
73
  "regenerate_key": ".regenerate_key",
73
74
  "scopes": ".scopes",
75
+ "selective_sync": ".selective_sync",
74
76
  "series": ".series",
75
77
  "sync_status": ".sync_status",
76
78
  "users": ".users",
@@ -129,6 +131,7 @@ __all__ = [
129
131
  "passthrough",
130
132
  "regenerate_key",
131
133
  "scopes",
134
+ "selective_sync",
132
135
  "series",
133
136
  "sync_status",
134
137
  "users",
@@ -0,0 +1,4 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
@@ -0,0 +1,104 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from .....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from .....core.request_options import RequestOptions
7
+ from ...types.selective_sync_condition_list import SelectiveSyncConditionList
8
+ from .raw_client import AsyncRawSelectiveSyncClient, RawSelectiveSyncClient
9
+
10
+
11
+ class SelectiveSyncClient:
12
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
13
+ self._raw_client = RawSelectiveSyncClient(client_wrapper=client_wrapper)
14
+
15
+ @property
16
+ def with_raw_response(self) -> RawSelectiveSyncClient:
17
+ """
18
+ Retrieves a raw implementation of this client that returns raw responses.
19
+
20
+ Returns
21
+ -------
22
+ RawSelectiveSyncClient
23
+ """
24
+ return self._raw_client
25
+
26
+ def conditions_list(self, *, request_options: typing.Optional[RequestOptions] = None) -> SelectiveSyncConditionList:
27
+ """
28
+ Returns a list of `SelectiveSyncCondition` objects.
29
+
30
+ Parameters
31
+ ----------
32
+ request_options : typing.Optional[RequestOptions]
33
+ Request-specific configuration.
34
+
35
+ Returns
36
+ -------
37
+ SelectiveSyncConditionList
38
+
39
+
40
+ Examples
41
+ --------
42
+ from merge import Merge
43
+
44
+ client = Merge(
45
+ account_token="YOUR_ACCOUNT_TOKEN",
46
+ api_key="YOUR_API_KEY",
47
+ )
48
+ client.calendar.selective_sync.conditions_list()
49
+ """
50
+ _response = self._raw_client.conditions_list(request_options=request_options)
51
+ return _response.data
52
+
53
+
54
+ class AsyncSelectiveSyncClient:
55
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
56
+ self._raw_client = AsyncRawSelectiveSyncClient(client_wrapper=client_wrapper)
57
+
58
+ @property
59
+ def with_raw_response(self) -> AsyncRawSelectiveSyncClient:
60
+ """
61
+ Retrieves a raw implementation of this client that returns raw responses.
62
+
63
+ Returns
64
+ -------
65
+ AsyncRawSelectiveSyncClient
66
+ """
67
+ return self._raw_client
68
+
69
+ async def conditions_list(
70
+ self, *, request_options: typing.Optional[RequestOptions] = None
71
+ ) -> SelectiveSyncConditionList:
72
+ """
73
+ Returns a list of `SelectiveSyncCondition` objects.
74
+
75
+ Parameters
76
+ ----------
77
+ request_options : typing.Optional[RequestOptions]
78
+ Request-specific configuration.
79
+
80
+ Returns
81
+ -------
82
+ SelectiveSyncConditionList
83
+
84
+
85
+ Examples
86
+ --------
87
+ import asyncio
88
+
89
+ from merge import AsyncMerge
90
+
91
+ client = AsyncMerge(
92
+ account_token="YOUR_ACCOUNT_TOKEN",
93
+ api_key="YOUR_API_KEY",
94
+ )
95
+
96
+
97
+ async def main() -> None:
98
+ await client.calendar.selective_sync.conditions_list()
99
+
100
+
101
+ asyncio.run(main())
102
+ """
103
+ _response = await self._raw_client.conditions_list(request_options=request_options)
104
+ return _response.data
@@ -0,0 +1,103 @@
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.selective_sync_condition_list import SelectiveSyncConditionList
13
+ from pydantic import ValidationError
14
+
15
+
16
+ class RawSelectiveSyncClient:
17
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
18
+ self._client_wrapper = client_wrapper
19
+
20
+ def conditions_list(
21
+ self, *, request_options: typing.Optional[RequestOptions] = None
22
+ ) -> HttpResponse[SelectiveSyncConditionList]:
23
+ """
24
+ Returns a list of `SelectiveSyncCondition` objects.
25
+
26
+ Parameters
27
+ ----------
28
+ request_options : typing.Optional[RequestOptions]
29
+ Request-specific configuration.
30
+
31
+ Returns
32
+ -------
33
+ HttpResponse[SelectiveSyncConditionList]
34
+
35
+ """
36
+ _response = self._client_wrapper.httpx_client.request(
37
+ "calendar/v1/selective-sync/conditions",
38
+ method="GET",
39
+ request_options=request_options,
40
+ )
41
+ try:
42
+ if 200 <= _response.status_code < 300:
43
+ _data = typing.cast(
44
+ SelectiveSyncConditionList,
45
+ construct_type(
46
+ type_=SelectiveSyncConditionList, # type: ignore
47
+ object_=_response.json(),
48
+ ),
49
+ )
50
+ return HttpResponse(response=_response, data=_data)
51
+ _response_json = _response.json()
52
+ except JSONDecodeError:
53
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
54
+ except ValidationError as e:
55
+ raise ParsingError(
56
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
57
+ )
58
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
59
+
60
+
61
+ class AsyncRawSelectiveSyncClient:
62
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
63
+ self._client_wrapper = client_wrapper
64
+
65
+ async def conditions_list(
66
+ self, *, request_options: typing.Optional[RequestOptions] = None
67
+ ) -> AsyncHttpResponse[SelectiveSyncConditionList]:
68
+ """
69
+ Returns a list of `SelectiveSyncCondition` objects.
70
+
71
+ Parameters
72
+ ----------
73
+ request_options : typing.Optional[RequestOptions]
74
+ Request-specific configuration.
75
+
76
+ Returns
77
+ -------
78
+ AsyncHttpResponse[SelectiveSyncConditionList]
79
+
80
+ """
81
+ _response = await self._client_wrapper.httpx_client.request(
82
+ "calendar/v1/selective-sync/conditions",
83
+ method="GET",
84
+ request_options=request_options,
85
+ )
86
+ try:
87
+ if 200 <= _response.status_code < 300:
88
+ _data = typing.cast(
89
+ SelectiveSyncConditionList,
90
+ construct_type(
91
+ type_=SelectiveSyncConditionList, # type: ignore
92
+ object_=_response.json(),
93
+ ),
94
+ )
95
+ return AsyncHttpResponse(response=_response, data=_data)
96
+ _response_json = _response.json()
97
+ except JSONDecodeError:
98
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
99
+ except ValidationError as e:
100
+ raise ParsingError(
101
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
102
+ )
103
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
@@ -78,6 +78,7 @@ if typing.TYPE_CHECKING:
78
78
  from .model_permission_deserializer_request import ModelPermissionDeserializerRequest
79
79
  from .multipart_form_field_request import MultipartFormFieldRequest
80
80
  from .multipart_form_field_request_encoding import MultipartFormFieldRequestEncoding
81
+ from .operator_enum import OperatorEnum
81
82
  from .paginated_account_details_and_actions_list import PaginatedAccountDetailsAndActionsList
82
83
  from .paginated_audit_log_event_list import PaginatedAuditLogEventList
83
84
  from .paginated_calendar_list import PaginatedCalendarList
@@ -109,13 +110,18 @@ if typing.TYPE_CHECKING:
109
110
  from .role_enum import RoleEnum
110
111
  from .roles_enum import RolesEnum
111
112
  from .rsvp_enum import RsvpEnum
113
+ from .selective_sync_condition import SelectiveSyncCondition
114
+ from .selective_sync_condition_list import SelectiveSyncConditionList
115
+ from .selective_sync_condition_operator import SelectiveSyncConditionOperator
112
116
  from .selective_sync_configurations_usage_enum import SelectiveSyncConfigurationsUsageEnum
113
117
  from .series import Series
114
118
  from .series_field_mappings import SeriesFieldMappings
115
119
  from .status_fd_5_enum import StatusFd5Enum
116
120
  from .sync_status import SyncStatus
117
121
  from .sync_status_last_sync_result import SyncStatusLastSyncResult
122
+ from .sync_status_reason_enum import SyncStatusReasonEnum
118
123
  from .sync_status_status import SyncStatusStatus
124
+ from .sync_status_sync_status_reason import SyncStatusSyncStatusReason
119
125
  from .user import User
120
126
  from .user_field_mappings import UserFieldMappings
121
127
  from .validation_problem_source import ValidationProblemSource
@@ -192,6 +198,7 @@ _dynamic_imports: typing.Dict[str, str] = {
192
198
  "ModelPermissionDeserializerRequest": ".model_permission_deserializer_request",
193
199
  "MultipartFormFieldRequest": ".multipart_form_field_request",
194
200
  "MultipartFormFieldRequestEncoding": ".multipart_form_field_request_encoding",
201
+ "OperatorEnum": ".operator_enum",
195
202
  "PaginatedAccountDetailsAndActionsList": ".paginated_account_details_and_actions_list",
196
203
  "PaginatedAuditLogEventList": ".paginated_audit_log_event_list",
197
204
  "PaginatedCalendarList": ".paginated_calendar_list",
@@ -223,13 +230,18 @@ _dynamic_imports: typing.Dict[str, str] = {
223
230
  "RoleEnum": ".role_enum",
224
231
  "RolesEnum": ".roles_enum",
225
232
  "RsvpEnum": ".rsvp_enum",
233
+ "SelectiveSyncCondition": ".selective_sync_condition",
234
+ "SelectiveSyncConditionList": ".selective_sync_condition_list",
235
+ "SelectiveSyncConditionOperator": ".selective_sync_condition_operator",
226
236
  "SelectiveSyncConfigurationsUsageEnum": ".selective_sync_configurations_usage_enum",
227
237
  "Series": ".series",
228
238
  "SeriesFieldMappings": ".series_field_mappings",
229
239
  "StatusFd5Enum": ".status_fd_5_enum",
230
240
  "SyncStatus": ".sync_status",
231
241
  "SyncStatusLastSyncResult": ".sync_status_last_sync_result",
242
+ "SyncStatusReasonEnum": ".sync_status_reason_enum",
232
243
  "SyncStatusStatus": ".sync_status_status",
244
+ "SyncStatusSyncStatusReason": ".sync_status_sync_status_reason",
233
245
  "User": ".user",
234
246
  "UserFieldMappings": ".user_field_mappings",
235
247
  "ValidationProblemSource": ".validation_problem_source",
@@ -330,6 +342,7 @@ __all__ = [
330
342
  "ModelPermissionDeserializerRequest",
331
343
  "MultipartFormFieldRequest",
332
344
  "MultipartFormFieldRequestEncoding",
345
+ "OperatorEnum",
333
346
  "PaginatedAccountDetailsAndActionsList",
334
347
  "PaginatedAuditLogEventList",
335
348
  "PaginatedCalendarList",
@@ -361,13 +374,18 @@ __all__ = [
361
374
  "RoleEnum",
362
375
  "RolesEnum",
363
376
  "RsvpEnum",
377
+ "SelectiveSyncCondition",
378
+ "SelectiveSyncConditionList",
379
+ "SelectiveSyncConditionOperator",
364
380
  "SelectiveSyncConfigurationsUsageEnum",
365
381
  "Series",
366
382
  "SeriesFieldMappings",
367
383
  "StatusFd5Enum",
368
384
  "SyncStatus",
369
385
  "SyncStatusLastSyncResult",
386
+ "SyncStatusReasonEnum",
370
387
  "SyncStatusStatus",
388
+ "SyncStatusSyncStatusReason",
371
389
  "User",
372
390
  "UserFieldMappings",
373
391
  "ValidationProblemSource",
@@ -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]
@@ -9,6 +9,7 @@ from ....core.unchecked_base_model import UncheckedBaseModel
9
9
  from .selective_sync_configurations_usage_enum import SelectiveSyncConfigurationsUsageEnum
10
10
  from .sync_status_last_sync_result import SyncStatusLastSyncResult
11
11
  from .sync_status_status import SyncStatusStatus
12
+ from .sync_status_sync_status_reason import SyncStatusSyncStatusReason
12
13
 
13
14
 
14
15
  class SyncStatus(UncheckedBaseModel):
@@ -27,7 +28,13 @@ class SyncStatus(UncheckedBaseModel):
27
28
  next_sync_start: typing.Optional[dt.datetime] = None
28
29
  last_sync_result: typing.Optional[SyncStatusLastSyncResult] = None
29
30
  last_sync_finished: typing.Optional[dt.datetime] = None
31
+ data_fresh_as_of: typing.Optional[dt.datetime] = None
30
32
  status: SyncStatusStatus
33
+ sync_status_reason: typing.Optional[SyncStatusSyncStatusReason] = pydantic.Field(default=None)
34
+ """
35
+ The reason a model with a `SYNCING` status is temporarily not progressing. `RATE_LIMITED` indicates the model is paused to respect the data provider's rate limits. `WAITING_ON_OTHER_MODELS` indicates the model is waiting for other models to finish syncing.
36
+ """
37
+
31
38
  is_initial_sync: bool
32
39
  selective_sync_configurations_usage: typing.Optional[SelectiveSyncConfigurationsUsageEnum] = None
33
40
 
@@ -0,0 +1,20 @@
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 SyncStatusReasonEnum(enum.StrEnum):
11
+ RATE_LIMITED = "RATE_LIMITED"
12
+ WAITING_ON_OTHER_MODELS = "WAITING_ON_OTHER_MODELS"
13
+
14
+ def visit(
15
+ self, rate_limited: typing.Callable[[], T_Result], waiting_on_other_models: typing.Callable[[], T_Result]
16
+ ) -> T_Result:
17
+ if self is SyncStatusReasonEnum.RATE_LIMITED:
18
+ return rate_limited()
19
+ if self is SyncStatusReasonEnum.WAITING_ON_OTHER_MODELS:
20
+ return waiting_on_other_models()
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from .sync_status_reason_enum import SyncStatusReasonEnum
6
+
7
+ SyncStatusSyncStatusReason = typing.Union[SyncStatusReasonEnum, str]