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
@@ -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]
@@ -143,6 +143,7 @@ if typing.TYPE_CHECKING:
143
143
  NoteRequestOwner,
144
144
  NoteResponse,
145
145
  ObjectClassDescriptionRequest,
146
+ OperatorEnum,
146
147
  Opportunity,
147
148
  OpportunityAccount,
148
149
  OpportunityOwner,
@@ -225,12 +226,17 @@ if typing.TYPE_CHECKING:
225
226
  RequestFormatEnum,
226
227
  ResponseTypeEnum,
227
228
  RoleEnum,
229
+ SelectiveSyncCondition,
230
+ SelectiveSyncConditionList,
231
+ SelectiveSyncConditionOperator,
228
232
  SelectiveSyncConfigurationsUsageEnum,
229
233
  Stage,
230
234
  StatusFd5Enum,
231
235
  SyncStatus,
232
236
  SyncStatusLastSyncResult,
237
+ SyncStatusReasonEnum,
233
238
  SyncStatusStatus,
239
+ SyncStatusSyncStatusReason,
234
240
  Task,
235
241
  TaskAccount,
236
242
  TaskContact,
@@ -294,6 +300,7 @@ if typing.TYPE_CHECKING:
294
300
  passthrough,
295
301
  regenerate_key,
296
302
  scopes,
303
+ selective_sync,
297
304
  stages,
298
305
  sync_status,
299
306
  tasks,
@@ -449,6 +456,7 @@ _dynamic_imports: typing.Dict[str, str] = {
449
456
  "NotesListRequestExpandItem": ".resources",
450
457
  "NotesRetrieveRequestExpandItem": ".resources",
451
458
  "ObjectClassDescriptionRequest": ".types",
459
+ "OperatorEnum": ".types",
452
460
  "OpportunitiesListRequestExpandItem": ".resources",
453
461
  "OpportunitiesListRequestStatus": ".resources",
454
462
  "OpportunitiesRetrieveRequestExpandItem": ".resources",
@@ -534,12 +542,17 @@ _dynamic_imports: typing.Dict[str, str] = {
534
542
  "RequestFormatEnum": ".types",
535
543
  "ResponseTypeEnum": ".types",
536
544
  "RoleEnum": ".types",
545
+ "SelectiveSyncCondition": ".types",
546
+ "SelectiveSyncConditionList": ".types",
547
+ "SelectiveSyncConditionOperator": ".types",
537
548
  "SelectiveSyncConfigurationsUsageEnum": ".types",
538
549
  "Stage": ".types",
539
550
  "StatusFd5Enum": ".types",
540
551
  "SyncStatus": ".types",
541
552
  "SyncStatusLastSyncResult": ".types",
553
+ "SyncStatusReasonEnum": ".types",
542
554
  "SyncStatusStatus": ".types",
555
+ "SyncStatusSyncStatusReason": ".types",
543
556
  "Task": ".types",
544
557
  "TaskAccount": ".types",
545
558
  "TaskContact": ".types",
@@ -586,6 +599,7 @@ _dynamic_imports: typing.Dict[str, str] = {
586
599
  "passthrough": ".resources",
587
600
  "regenerate_key": ".resources",
588
601
  "scopes": ".resources",
602
+ "selective_sync": ".resources",
589
603
  "stages": ".resources",
590
604
  "sync_status": ".resources",
591
605
  "tasks": ".resources",
@@ -764,6 +778,7 @@ __all__ = [
764
778
  "NotesListRequestExpandItem",
765
779
  "NotesRetrieveRequestExpandItem",
766
780
  "ObjectClassDescriptionRequest",
781
+ "OperatorEnum",
767
782
  "OpportunitiesListRequestExpandItem",
768
783
  "OpportunitiesListRequestStatus",
769
784
  "OpportunitiesRetrieveRequestExpandItem",
@@ -849,12 +864,17 @@ __all__ = [
849
864
  "RequestFormatEnum",
850
865
  "ResponseTypeEnum",
851
866
  "RoleEnum",
867
+ "SelectiveSyncCondition",
868
+ "SelectiveSyncConditionList",
869
+ "SelectiveSyncConditionOperator",
852
870
  "SelectiveSyncConfigurationsUsageEnum",
853
871
  "Stage",
854
872
  "StatusFd5Enum",
855
873
  "SyncStatus",
856
874
  "SyncStatusLastSyncResult",
875
+ "SyncStatusReasonEnum",
857
876
  "SyncStatusStatus",
877
+ "SyncStatusSyncStatusReason",
858
878
  "Task",
859
879
  "TaskAccount",
860
880
  "TaskContact",
@@ -901,6 +921,7 @@ __all__ = [
901
921
  "passthrough",
902
922
  "regenerate_key",
903
923
  "scopes",
924
+ "selective_sync",
904
925
  "stages",
905
926
  "sync_status",
906
927
  "tasks",
@@ -40,6 +40,7 @@ if typing.TYPE_CHECKING:
40
40
  from .resources.passthrough.client import PassthroughClient
41
41
  from .resources.regenerate_key.client import AsyncRegenerateKeyClient, RegenerateKeyClient
42
42
  from .resources.scopes.client import AsyncScopesClient, ScopesClient
43
+ from .resources.selective_sync.client import AsyncSelectiveSyncClient, SelectiveSyncClient
43
44
  from .resources.stages.client import AsyncStagesClient, StagesClient
44
45
  from .resources.sync_status.client import AsyncSyncStatusClient, SyncStatusClient
45
46
  from .resources.tasks.client import AsyncTasksClient, TasksClient
@@ -78,6 +79,7 @@ class CrmClient:
78
79
  self._opportunities: typing.Optional[OpportunitiesClient] = None
79
80
  self._passthrough: typing.Optional[PassthroughClient] = None
80
81
  self._regenerate_key: typing.Optional[RegenerateKeyClient] = None
82
+ self._selective_sync: typing.Optional[SelectiveSyncClient] = None
81
83
  self._stages: typing.Optional[StagesClient] = None
82
84
  self._sync_status: typing.Optional[SyncStatusClient] = None
83
85
  self._force_resync: typing.Optional[ForceResyncClient] = None
@@ -300,6 +302,14 @@ class CrmClient:
300
302
  self._regenerate_key = RegenerateKeyClient(client_wrapper=self._client_wrapper)
301
303
  return self._regenerate_key
302
304
 
305
+ @property
306
+ def selective_sync(self):
307
+ if self._selective_sync is None:
308
+ from .resources.selective_sync.client import SelectiveSyncClient # noqa: E402
309
+
310
+ self._selective_sync = SelectiveSyncClient(client_wrapper=self._client_wrapper)
311
+ return self._selective_sync
312
+
303
313
  @property
304
314
  def stages(self):
305
315
  if self._stages is None:
@@ -378,6 +388,7 @@ class AsyncCrmClient:
378
388
  self._opportunities: typing.Optional[AsyncOpportunitiesClient] = None
379
389
  self._passthrough: typing.Optional[resources_crm_resources_passthrough_client_AsyncPassthroughClient] = None
380
390
  self._regenerate_key: typing.Optional[AsyncRegenerateKeyClient] = None
391
+ self._selective_sync: typing.Optional[AsyncSelectiveSyncClient] = None
381
392
  self._stages: typing.Optional[AsyncStagesClient] = None
382
393
  self._sync_status: typing.Optional[AsyncSyncStatusClient] = None
383
394
  self._force_resync: typing.Optional[AsyncForceResyncClient] = None
@@ -600,6 +611,14 @@ class AsyncCrmClient:
600
611
  self._regenerate_key = AsyncRegenerateKeyClient(client_wrapper=self._client_wrapper)
601
612
  return self._regenerate_key
602
613
 
614
+ @property
615
+ def selective_sync(self):
616
+ if self._selective_sync is None:
617
+ from .resources.selective_sync.client import AsyncSelectiveSyncClient # noqa: E402
618
+
619
+ self._selective_sync = AsyncSelectiveSyncClient(client_wrapper=self._client_wrapper)
620
+ return self._selective_sync
621
+
603
622
  @property
604
623
  def stages(self):
605
624
  if self._stages is None:
@@ -33,6 +33,7 @@ if typing.TYPE_CHECKING:
33
33
  passthrough,
34
34
  regenerate_key,
35
35
  scopes,
36
+ selective_sync,
36
37
  stages,
37
38
  sync_status,
38
39
  tasks,
@@ -97,6 +98,7 @@ _dynamic_imports: typing.Dict[str, str] = {
97
98
  "passthrough": ".passthrough",
98
99
  "regenerate_key": ".regenerate_key",
99
100
  "scopes": ".scopes",
101
+ "selective_sync": ".selective_sync",
100
102
  "stages": ".stages",
101
103
  "sync_status": ".sync_status",
102
104
  "tasks": ".tasks",
@@ -170,6 +172,7 @@ __all__ = [
170
172
  "passthrough",
171
173
  "regenerate_key",
172
174
  "scopes",
175
+ "selective_sync",
173
176
  "stages",
174
177
  "sync_status",
175
178
  "tasks",
@@ -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.crm.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.crm.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
+ "crm/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
+ "crm/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)
@@ -146,6 +146,7 @@ if typing.TYPE_CHECKING:
146
146
  from .note_request_owner import NoteRequestOwner
147
147
  from .note_response import NoteResponse
148
148
  from .object_class_description_request import ObjectClassDescriptionRequest
149
+ from .operator_enum import OperatorEnum
149
150
  from .opportunity import Opportunity
150
151
  from .opportunity_account import OpportunityAccount
151
152
  from .opportunity_owner import OpportunityOwner
@@ -230,12 +231,17 @@ if typing.TYPE_CHECKING:
230
231
  from .request_format_enum import RequestFormatEnum
231
232
  from .response_type_enum import ResponseTypeEnum
232
233
  from .role_enum import RoleEnum
234
+ from .selective_sync_condition import SelectiveSyncCondition
235
+ from .selective_sync_condition_list import SelectiveSyncConditionList
236
+ from .selective_sync_condition_operator import SelectiveSyncConditionOperator
233
237
  from .selective_sync_configurations_usage_enum import SelectiveSyncConfigurationsUsageEnum
234
238
  from .stage import Stage
235
239
  from .status_fd_5_enum import StatusFd5Enum
236
240
  from .sync_status import SyncStatus
237
241
  from .sync_status_last_sync_result import SyncStatusLastSyncResult
242
+ from .sync_status_reason_enum import SyncStatusReasonEnum
238
243
  from .sync_status_status import SyncStatusStatus
244
+ from .sync_status_sync_status_reason import SyncStatusSyncStatusReason
239
245
  from .task import Task
240
246
  from .task_account import TaskAccount
241
247
  from .task_contact import TaskContact
@@ -391,6 +397,7 @@ _dynamic_imports: typing.Dict[str, str] = {
391
397
  "NoteRequestOwner": ".note_request_owner",
392
398
  "NoteResponse": ".note_response",
393
399
  "ObjectClassDescriptionRequest": ".object_class_description_request",
400
+ "OperatorEnum": ".operator_enum",
394
401
  "Opportunity": ".opportunity",
395
402
  "OpportunityAccount": ".opportunity_account",
396
403
  "OpportunityOwner": ".opportunity_owner",
@@ -473,12 +480,17 @@ _dynamic_imports: typing.Dict[str, str] = {
473
480
  "RequestFormatEnum": ".request_format_enum",
474
481
  "ResponseTypeEnum": ".response_type_enum",
475
482
  "RoleEnum": ".role_enum",
483
+ "SelectiveSyncCondition": ".selective_sync_condition",
484
+ "SelectiveSyncConditionList": ".selective_sync_condition_list",
485
+ "SelectiveSyncConditionOperator": ".selective_sync_condition_operator",
476
486
  "SelectiveSyncConfigurationsUsageEnum": ".selective_sync_configurations_usage_enum",
477
487
  "Stage": ".stage",
478
488
  "StatusFd5Enum": ".status_fd_5_enum",
479
489
  "SyncStatus": ".sync_status",
480
490
  "SyncStatusLastSyncResult": ".sync_status_last_sync_result",
491
+ "SyncStatusReasonEnum": ".sync_status_reason_enum",
481
492
  "SyncStatusStatus": ".sync_status_status",
493
+ "SyncStatusSyncStatusReason": ".sync_status_sync_status_reason",
482
494
  "Task": ".task",
483
495
  "TaskAccount": ".task_account",
484
496
  "TaskContact": ".task_contact",
@@ -658,6 +670,7 @@ __all__ = [
658
670
  "NoteRequestOwner",
659
671
  "NoteResponse",
660
672
  "ObjectClassDescriptionRequest",
673
+ "OperatorEnum",
661
674
  "Opportunity",
662
675
  "OpportunityAccount",
663
676
  "OpportunityOwner",
@@ -740,12 +753,17 @@ __all__ = [
740
753
  "RequestFormatEnum",
741
754
  "ResponseTypeEnum",
742
755
  "RoleEnum",
756
+ "SelectiveSyncCondition",
757
+ "SelectiveSyncConditionList",
758
+ "SelectiveSyncConditionOperator",
743
759
  "SelectiveSyncConfigurationsUsageEnum",
744
760
  "Stage",
745
761
  "StatusFd5Enum",
746
762
  "SyncStatus",
747
763
  "SyncStatusLastSyncResult",
764
+ "SyncStatusReasonEnum",
748
765
  "SyncStatusStatus",
766
+ "SyncStatusSyncStatusReason",
749
767
  "Task",
750
768
  "TaskAccount",
751
769
  "TaskContact",
@@ -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()