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,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,6 +110,9 @@ 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
@@ -194,6 +198,7 @@ _dynamic_imports: typing.Dict[str, str] = {
194
198
  "ModelPermissionDeserializerRequest": ".model_permission_deserializer_request",
195
199
  "MultipartFormFieldRequest": ".multipart_form_field_request",
196
200
  "MultipartFormFieldRequestEncoding": ".multipart_form_field_request_encoding",
201
+ "OperatorEnum": ".operator_enum",
197
202
  "PaginatedAccountDetailsAndActionsList": ".paginated_account_details_and_actions_list",
198
203
  "PaginatedAuditLogEventList": ".paginated_audit_log_event_list",
199
204
  "PaginatedCalendarList": ".paginated_calendar_list",
@@ -225,6 +230,9 @@ _dynamic_imports: typing.Dict[str, str] = {
225
230
  "RoleEnum": ".role_enum",
226
231
  "RolesEnum": ".roles_enum",
227
232
  "RsvpEnum": ".rsvp_enum",
233
+ "SelectiveSyncCondition": ".selective_sync_condition",
234
+ "SelectiveSyncConditionList": ".selective_sync_condition_list",
235
+ "SelectiveSyncConditionOperator": ".selective_sync_condition_operator",
228
236
  "SelectiveSyncConfigurationsUsageEnum": ".selective_sync_configurations_usage_enum",
229
237
  "Series": ".series",
230
238
  "SeriesFieldMappings": ".series_field_mappings",
@@ -334,6 +342,7 @@ __all__ = [
334
342
  "ModelPermissionDeserializerRequest",
335
343
  "MultipartFormFieldRequest",
336
344
  "MultipartFormFieldRequestEncoding",
345
+ "OperatorEnum",
337
346
  "PaginatedAccountDetailsAndActionsList",
338
347
  "PaginatedAuditLogEventList",
339
348
  "PaginatedCalendarList",
@@ -365,6 +374,9 @@ __all__ = [
365
374
  "RoleEnum",
366
375
  "RolesEnum",
367
376
  "RsvpEnum",
377
+ "SelectiveSyncCondition",
378
+ "SelectiveSyncConditionList",
379
+ "SelectiveSyncConditionOperator",
368
380
  "SelectiveSyncConfigurationsUsageEnum",
369
381
  "Series",
370
382
  "SeriesFieldMappings",
@@ -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
  """
@@ -24,6 +24,9 @@ if typing.TYPE_CHECKING:
24
24
  AvailableActions,
25
25
  CategoriesEnum,
26
26
  CategoryEnum,
27
+ ChatSyncSelection,
28
+ ChatSyncSelectionType,
29
+ ChatSyncSelectionTypeEnum,
27
30
  CommonModelScopeApi,
28
31
  CommonModelScopesBodyRequest,
29
32
  CompletedAccountInitialScreenEnum,
@@ -58,6 +61,8 @@ if typing.TYPE_CHECKING:
58
61
  Issue,
59
62
  IssueStatus,
60
63
  IssueStatusEnum,
64
+ LabelSelection,
65
+ LabelSelectionList,
61
66
  LanguageEnum,
62
67
  LastSyncResultEnum,
63
68
  LinkToken,
@@ -72,8 +77,10 @@ if typing.TYPE_CHECKING:
72
77
  ModelPermissionDeserializerRequest,
73
78
  MultipartFormFieldRequest,
74
79
  MultipartFormFieldRequestEncoding,
80
+ OperatorEnum,
75
81
  PaginatedAccountDetailsAndActionsList,
76
82
  PaginatedAuditLogEventList,
83
+ PaginatedChatSyncSelectionList,
77
84
  PaginatedConversationList,
78
85
  PaginatedGroupList,
79
86
  PaginatedIssueList,
@@ -94,6 +101,9 @@ if typing.TYPE_CHECKING:
94
101
  RequestFormatEnum,
95
102
  ResponseTypeEnum,
96
103
  RoleEnum,
104
+ SelectiveSyncCondition,
105
+ SelectiveSyncConditionList,
106
+ SelectiveSyncConditionOperator,
97
107
  SelectiveSyncConfigurationsUsageEnum,
98
108
  StatusFd5Enum,
99
109
  SyncStatus,
@@ -136,6 +146,7 @@ if typing.TYPE_CHECKING:
136
146
  passthrough,
137
147
  regenerate_key,
138
148
  scopes,
149
+ selective_sync,
139
150
  sync_status,
140
151
  users,
141
152
  webhook_receivers,
@@ -159,6 +170,9 @@ _dynamic_imports: typing.Dict[str, str] = {
159
170
  "AvailableActions": ".types",
160
171
  "CategoriesEnum": ".types",
161
172
  "CategoryEnum": ".types",
173
+ "ChatSyncSelection": ".types",
174
+ "ChatSyncSelectionType": ".types",
175
+ "ChatSyncSelectionTypeEnum": ".types",
162
176
  "CommonModelScopeApi": ".types",
163
177
  "CommonModelScopesBodyRequest": ".types",
164
178
  "CompletedAccountInitialScreenEnum": ".types",
@@ -197,6 +211,8 @@ _dynamic_imports: typing.Dict[str, str] = {
197
211
  "IssueStatus": ".types",
198
212
  "IssueStatusEnum": ".types",
199
213
  "IssuesListRequestStatus": ".resources",
214
+ "LabelSelection": ".types",
215
+ "LabelSelectionList": ".types",
200
216
  "LanguageEnum": ".types",
201
217
  "LastSyncResultEnum": ".types",
202
218
  "LinkToken": ".types",
@@ -214,8 +230,10 @@ _dynamic_imports: typing.Dict[str, str] = {
214
230
  "ModelPermissionDeserializerRequest": ".types",
215
231
  "MultipartFormFieldRequest": ".types",
216
232
  "MultipartFormFieldRequestEncoding": ".types",
233
+ "OperatorEnum": ".types",
217
234
  "PaginatedAccountDetailsAndActionsList": ".types",
218
235
  "PaginatedAuditLogEventList": ".types",
236
+ "PaginatedChatSyncSelectionList": ".types",
219
237
  "PaginatedConversationList": ".types",
220
238
  "PaginatedGroupList": ".types",
221
239
  "PaginatedIssueList": ".types",
@@ -236,6 +254,9 @@ _dynamic_imports: typing.Dict[str, str] = {
236
254
  "RequestFormatEnum": ".types",
237
255
  "ResponseTypeEnum": ".types",
238
256
  "RoleEnum": ".types",
257
+ "SelectiveSyncCondition": ".types",
258
+ "SelectiveSyncConditionList": ".types",
259
+ "SelectiveSyncConditionOperator": ".types",
239
260
  "SelectiveSyncConfigurationsUsageEnum": ".types",
240
261
  "StatusFd5Enum": ".types",
241
262
  "SyncStatus": ".types",
@@ -268,6 +289,7 @@ _dynamic_imports: typing.Dict[str, str] = {
268
289
  "passthrough": ".resources",
269
290
  "regenerate_key": ".resources",
270
291
  "scopes": ".resources",
292
+ "selective_sync": ".resources",
271
293
  "sync_status": ".resources",
272
294
  "users": ".resources",
273
295
  "webhook_receivers": ".resources",
@@ -314,6 +336,9 @@ __all__ = [
314
336
  "AvailableActions",
315
337
  "CategoriesEnum",
316
338
  "CategoryEnum",
339
+ "ChatSyncSelection",
340
+ "ChatSyncSelectionType",
341
+ "ChatSyncSelectionTypeEnum",
317
342
  "CommonModelScopeApi",
318
343
  "CommonModelScopesBodyRequest",
319
344
  "CompletedAccountInitialScreenEnum",
@@ -352,6 +377,8 @@ __all__ = [
352
377
  "IssueStatus",
353
378
  "IssueStatusEnum",
354
379
  "IssuesListRequestStatus",
380
+ "LabelSelection",
381
+ "LabelSelectionList",
355
382
  "LanguageEnum",
356
383
  "LastSyncResultEnum",
357
384
  "LinkToken",
@@ -369,8 +396,10 @@ __all__ = [
369
396
  "ModelPermissionDeserializerRequest",
370
397
  "MultipartFormFieldRequest",
371
398
  "MultipartFormFieldRequestEncoding",
399
+ "OperatorEnum",
372
400
  "PaginatedAccountDetailsAndActionsList",
373
401
  "PaginatedAuditLogEventList",
402
+ "PaginatedChatSyncSelectionList",
374
403
  "PaginatedConversationList",
375
404
  "PaginatedGroupList",
376
405
  "PaginatedIssueList",
@@ -391,6 +420,9 @@ __all__ = [
391
420
  "RequestFormatEnum",
392
421
  "ResponseTypeEnum",
393
422
  "RoleEnum",
423
+ "SelectiveSyncCondition",
424
+ "SelectiveSyncConditionList",
425
+ "SelectiveSyncConditionOperator",
394
426
  "SelectiveSyncConfigurationsUsageEnum",
395
427
  "StatusFd5Enum",
396
428
  "SyncStatus",
@@ -423,6 +455,7 @@ __all__ = [
423
455
  "passthrough",
424
456
  "regenerate_key",
425
457
  "scopes",
458
+ "selective_sync",
426
459
  "sync_status",
427
460
  "users",
428
461
  "webhook_receivers",
@@ -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.sync_status.client import AsyncSyncStatusClient, SyncStatusClient
36
37
  from .resources.users.client import AsyncUsersClient, UsersClient
37
38
  from .resources.webhook_receivers.client import AsyncWebhookReceiversClient, WebhookReceiversClient
@@ -60,6 +61,7 @@ class ChatClient:
60
61
  self._messages: typing.Optional[MessagesClient] = None
61
62
  self._passthrough: typing.Optional[PassthroughClient] = None
62
63
  self._regenerate_key: typing.Optional[RegenerateKeyClient] = None
64
+ self._selective_sync: typing.Optional[SelectiveSyncClient] = None
63
65
  self._sync_status: typing.Optional[SyncStatusClient] = None
64
66
  self._force_resync: typing.Optional[ForceResyncClient] = None
65
67
  self._users: typing.Optional[UsersClient] = None
@@ -216,6 +218,14 @@ class ChatClient:
216
218
  self._regenerate_key = RegenerateKeyClient(client_wrapper=self._client_wrapper)
217
219
  return self._regenerate_key
218
220
 
221
+ @property
222
+ def selective_sync(self):
223
+ if self._selective_sync is None:
224
+ from .resources.selective_sync.client import SelectiveSyncClient # noqa: E402
225
+
226
+ self._selective_sync = SelectiveSyncClient(client_wrapper=self._client_wrapper)
227
+ return self._selective_sync
228
+
219
229
  @property
220
230
  def sync_status(self):
221
231
  if self._sync_status is None:
@@ -270,6 +280,7 @@ class AsyncChatClient:
270
280
  self._messages: typing.Optional[AsyncMessagesClient] = None
271
281
  self._passthrough: typing.Optional[resources_chat_resources_passthrough_client_AsyncPassthroughClient] = None
272
282
  self._regenerate_key: typing.Optional[AsyncRegenerateKeyClient] = None
283
+ self._selective_sync: typing.Optional[AsyncSelectiveSyncClient] = None
273
284
  self._sync_status: typing.Optional[AsyncSyncStatusClient] = None
274
285
  self._force_resync: typing.Optional[AsyncForceResyncClient] = None
275
286
  self._users: typing.Optional[AsyncUsersClient] = None
@@ -426,6 +437,14 @@ class AsyncChatClient:
426
437
  self._regenerate_key = AsyncRegenerateKeyClient(client_wrapper=self._client_wrapper)
427
438
  return self._regenerate_key
428
439
 
440
+ @property
441
+ def selective_sync(self):
442
+ if self._selective_sync is None:
443
+ from .resources.selective_sync.client import AsyncSelectiveSyncClient # noqa: E402
444
+
445
+ self._selective_sync = AsyncSelectiveSyncClient(client_wrapper=self._client_wrapper)
446
+ return self._selective_sync
447
+
429
448
  @property
430
449
  def sync_status(self):
431
450
  if self._sync_status 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
  sync_status,
29
30
  users,
30
31
  webhook_receivers,
@@ -62,6 +63,7 @@ _dynamic_imports: typing.Dict[str, str] = {
62
63
  "passthrough": ".passthrough",
63
64
  "regenerate_key": ".regenerate_key",
64
65
  "scopes": ".scopes",
66
+ "selective_sync": ".selective_sync",
65
67
  "sync_status": ".sync_status",
66
68
  "users": ".users",
67
69
  "webhook_receivers": ".webhook_receivers",
@@ -116,6 +118,7 @@ __all__ = [
116
118
  "passthrough",
117
119
  "regenerate_key",
118
120
  "scopes",
121
+ "selective_sync",
119
122
  "sync_status",
120
123
  "users",
121
124
  "webhook_receivers",
@@ -0,0 +1,4 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+