mergepythonclient 2.3.2__py3-none-any.whl → 2.4.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 (209) hide show
  1. merge/__init__.py +3 -1
  2. merge/client.py +49 -30
  3. merge/core/client_wrapper.py +2 -2
  4. merge/resources/__init__.py +3 -2
  5. merge/resources/knowledgebase/__init__.py +472 -0
  6. merge/resources/knowledgebase/client.py +480 -0
  7. merge/resources/knowledgebase/raw_client.py +13 -0
  8. merge/resources/knowledgebase/resources/__init__.py +128 -0
  9. merge/resources/knowledgebase/resources/account_details/__init__.py +4 -0
  10. merge/resources/knowledgebase/resources/account_details/client.py +102 -0
  11. merge/resources/knowledgebase/resources/account_details/raw_client.py +91 -0
  12. merge/resources/knowledgebase/resources/account_token/__init__.py +4 -0
  13. merge/resources/knowledgebase/resources/account_token/client.py +112 -0
  14. merge/resources/knowledgebase/resources/account_token/raw_client.py +98 -0
  15. merge/resources/knowledgebase/resources/articles/__init__.py +35 -0
  16. merge/resources/knowledgebase/resources/articles/client.py +378 -0
  17. merge/resources/knowledgebase/resources/articles/raw_client.py +363 -0
  18. merge/resources/knowledgebase/resources/articles/types/__init__.py +36 -0
  19. merge/resources/knowledgebase/resources/articles/types/articles_list_request_expand.py +625 -0
  20. merge/resources/knowledgebase/resources/articles/types/articles_retrieve_request_expand.py +631 -0
  21. merge/resources/knowledgebase/resources/async_passthrough/__init__.py +32 -0
  22. merge/resources/knowledgebase/resources/async_passthrough/client.py +201 -0
  23. merge/resources/knowledgebase/resources/async_passthrough/raw_client.py +189 -0
  24. merge/resources/knowledgebase/resources/async_passthrough/types/__init__.py +32 -0
  25. merge/resources/knowledgebase/resources/async_passthrough/types/async_passthrough_retrieve_response.py +7 -0
  26. merge/resources/knowledgebase/resources/attachments/__init__.py +4 -0
  27. merge/resources/knowledgebase/resources/attachments/client.py +326 -0
  28. merge/resources/knowledgebase/resources/attachments/raw_client.py +311 -0
  29. merge/resources/knowledgebase/resources/audit_trail/__init__.py +4 -0
  30. merge/resources/knowledgebase/resources/audit_trail/client.py +178 -0
  31. merge/resources/knowledgebase/resources/audit_trail/raw_client.py +161 -0
  32. merge/resources/knowledgebase/resources/available_actions/__init__.py +4 -0
  33. merge/resources/knowledgebase/resources/available_actions/client.py +102 -0
  34. merge/resources/knowledgebase/resources/available_actions/raw_client.py +91 -0
  35. merge/resources/knowledgebase/resources/containers/__init__.py +35 -0
  36. merge/resources/knowledgebase/resources/containers/client.py +378 -0
  37. merge/resources/knowledgebase/resources/containers/raw_client.py +363 -0
  38. merge/resources/knowledgebase/resources/containers/types/__init__.py +36 -0
  39. merge/resources/knowledgebase/resources/containers/types/containers_list_request_expand.py +41 -0
  40. merge/resources/knowledgebase/resources/containers/types/containers_retrieve_request_expand.py +41 -0
  41. merge/resources/knowledgebase/resources/delete_account/__init__.py +4 -0
  42. merge/resources/knowledgebase/resources/delete_account/client.py +99 -0
  43. merge/resources/knowledgebase/resources/delete_account/raw_client.py +71 -0
  44. merge/resources/knowledgebase/resources/field_mapping/__init__.py +4 -0
  45. merge/resources/knowledgebase/resources/field_mapping/client.py +652 -0
  46. merge/resources/knowledgebase/resources/field_mapping/raw_client.py +672 -0
  47. merge/resources/knowledgebase/resources/force_resync/__init__.py +4 -0
  48. merge/resources/knowledgebase/resources/force_resync/client.py +106 -0
  49. merge/resources/knowledgebase/resources/force_resync/raw_client.py +93 -0
  50. merge/resources/knowledgebase/resources/generate_key/__init__.py +4 -0
  51. merge/resources/knowledgebase/resources/generate_key/client.py +115 -0
  52. merge/resources/knowledgebase/resources/generate_key/raw_client.py +114 -0
  53. merge/resources/knowledgebase/resources/groups/__init__.py +32 -0
  54. merge/resources/knowledgebase/resources/groups/client.py +348 -0
  55. merge/resources/knowledgebase/resources/groups/raw_client.py +333 -0
  56. merge/resources/knowledgebase/resources/groups/types/__init__.py +36 -0
  57. merge/resources/knowledgebase/resources/groups/types/groups_list_request_expand.py +25 -0
  58. merge/resources/knowledgebase/resources/groups/types/groups_retrieve_request_expand.py +25 -0
  59. merge/resources/knowledgebase/resources/issues/__init__.py +32 -0
  60. merge/resources/knowledgebase/resources/issues/client.py +331 -0
  61. merge/resources/knowledgebase/resources/issues/raw_client.py +336 -0
  62. merge/resources/knowledgebase/resources/issues/types/__init__.py +32 -0
  63. merge/resources/knowledgebase/resources/issues/types/issues_list_request_status.py +17 -0
  64. merge/resources/knowledgebase/resources/link_token/__init__.py +32 -0
  65. merge/resources/knowledgebase/resources/link_token/client.py +273 -0
  66. merge/resources/knowledgebase/resources/link_token/raw_client.py +256 -0
  67. merge/resources/knowledgebase/resources/link_token/types/__init__.py +32 -0
  68. merge/resources/knowledgebase/resources/link_token/types/end_user_details_request_language.py +7 -0
  69. merge/resources/knowledgebase/resources/linked_accounts/__init__.py +32 -0
  70. merge/resources/knowledgebase/resources/linked_accounts/client.py +265 -0
  71. merge/resources/knowledgebase/resources/linked_accounts/raw_client.py +248 -0
  72. merge/resources/knowledgebase/resources/linked_accounts/types/__init__.py +34 -0
  73. merge/resources/knowledgebase/resources/linked_accounts/types/linked_accounts_list_request_category.py +45 -0
  74. merge/resources/knowledgebase/resources/passthrough/__init__.py +4 -0
  75. merge/resources/knowledgebase/resources/passthrough/client.py +126 -0
  76. merge/resources/knowledgebase/resources/passthrough/raw_client.py +111 -0
  77. merge/resources/knowledgebase/resources/regenerate_key/__init__.py +4 -0
  78. merge/resources/knowledgebase/resources/regenerate_key/client.py +115 -0
  79. merge/resources/knowledgebase/resources/regenerate_key/raw_client.py +114 -0
  80. merge/resources/knowledgebase/resources/scopes/__init__.py +4 -0
  81. merge/resources/knowledgebase/resources/scopes/client.py +320 -0
  82. merge/resources/knowledgebase/resources/scopes/raw_client.py +267 -0
  83. merge/resources/knowledgebase/resources/sync_status/__init__.py +4 -0
  84. merge/resources/knowledgebase/resources/sync_status/client.py +130 -0
  85. merge/resources/knowledgebase/resources/sync_status/raw_client.py +121 -0
  86. merge/resources/knowledgebase/resources/users/__init__.py +4 -0
  87. merge/resources/knowledgebase/resources/users/client.py +326 -0
  88. merge/resources/knowledgebase/resources/users/raw_client.py +311 -0
  89. merge/resources/knowledgebase/resources/webhook_receivers/__init__.py +4 -0
  90. merge/resources/knowledgebase/resources/webhook_receivers/client.py +201 -0
  91. merge/resources/knowledgebase/resources/webhook_receivers/raw_client.py +208 -0
  92. merge/resources/knowledgebase/types/__init__.py +374 -0
  93. merge/resources/knowledgebase/types/account_details.py +40 -0
  94. merge/resources/knowledgebase/types/account_details_and_actions.py +54 -0
  95. merge/resources/knowledgebase/types/account_details_and_actions_category.py +7 -0
  96. merge/resources/knowledgebase/types/account_details_and_actions_integration.py +29 -0
  97. merge/resources/knowledgebase/types/account_details_and_actions_status.py +7 -0
  98. merge/resources/knowledgebase/types/account_details_and_actions_status_enum.py +36 -0
  99. merge/resources/knowledgebase/types/account_details_category.py +7 -0
  100. merge/resources/knowledgebase/types/account_integration.py +67 -0
  101. merge/resources/knowledgebase/types/account_token.py +23 -0
  102. merge/resources/knowledgebase/types/advanced_metadata.py +25 -0
  103. merge/resources/knowledgebase/types/article.py +159 -0
  104. merge/resources/knowledgebase/types/article_attachments_item.py +7 -0
  105. merge/resources/knowledgebase/types/article_author.py +7 -0
  106. merge/resources/knowledgebase/types/article_last_edited_by.py +7 -0
  107. merge/resources/knowledgebase/types/article_parent_article.py +9 -0
  108. merge/resources/knowledgebase/types/article_parent_container.py +7 -0
  109. merge/resources/knowledgebase/types/article_permissions_item.py +7 -0
  110. merge/resources/knowledgebase/types/article_root_container.py +7 -0
  111. merge/resources/knowledgebase/types/article_status.py +7 -0
  112. merge/resources/knowledgebase/types/article_type.py +7 -0
  113. merge/resources/knowledgebase/types/article_type_enum.py +31 -0
  114. merge/resources/knowledgebase/types/article_visibility.py +7 -0
  115. merge/resources/knowledgebase/types/async_passthrough_reciept.py +20 -0
  116. merge/resources/knowledgebase/types/attachment.py +67 -0
  117. merge/resources/knowledgebase/types/audit_log_event.py +97 -0
  118. merge/resources/knowledgebase/types/audit_log_event_event_type.py +7 -0
  119. merge/resources/knowledgebase/types/audit_log_event_role.py +7 -0
  120. merge/resources/knowledgebase/types/available_actions.py +33 -0
  121. merge/resources/knowledgebase/types/categories_enum.py +56 -0
  122. merge/resources/knowledgebase/types/category_enum.py +56 -0
  123. merge/resources/knowledgebase/types/common_model_scope_api.py +24 -0
  124. merge/resources/knowledgebase/types/common_model_scopes_body_request.py +23 -0
  125. merge/resources/knowledgebase/types/completed_account_initial_screen_enum.py +5 -0
  126. merge/resources/knowledgebase/types/container.py +130 -0
  127. merge/resources/knowledgebase/types/container_permissions_item.py +7 -0
  128. merge/resources/knowledgebase/types/container_status.py +7 -0
  129. merge/resources/knowledgebase/types/container_type.py +7 -0
  130. merge/resources/knowledgebase/types/container_type_enum.py +46 -0
  131. merge/resources/knowledgebase/types/container_visibility.py +7 -0
  132. merge/resources/knowledgebase/types/data_passthrough_request.py +62 -0
  133. merge/resources/knowledgebase/types/data_passthrough_request_method.py +7 -0
  134. merge/resources/knowledgebase/types/data_passthrough_request_request_format.py +7 -0
  135. merge/resources/knowledgebase/types/debug_mode_log.py +23 -0
  136. merge/resources/knowledgebase/types/debug_model_log_summary.py +22 -0
  137. merge/resources/knowledgebase/types/enabled_actions_enum.py +22 -0
  138. merge/resources/knowledgebase/types/encoding_enum.py +31 -0
  139. merge/resources/knowledgebase/types/error_validation_problem.py +24 -0
  140. merge/resources/knowledgebase/types/event_type_enum.py +231 -0
  141. merge/resources/knowledgebase/types/external_target_field_api.py +22 -0
  142. merge/resources/knowledgebase/types/external_target_field_api_response.py +25 -0
  143. merge/resources/knowledgebase/types/field_mapping_api_instance.py +26 -0
  144. merge/resources/knowledgebase/types/field_mapping_api_instance_remote_field.py +27 -0
  145. merge/resources/knowledgebase/types/field_mapping_api_instance_remote_field_remote_endpoint_info.py +22 -0
  146. merge/resources/knowledgebase/types/field_mapping_api_instance_response.py +25 -0
  147. merge/resources/knowledgebase/types/field_mapping_api_instance_target_field.py +22 -0
  148. merge/resources/knowledgebase/types/field_mapping_instance_response.py +27 -0
  149. merge/resources/knowledgebase/types/field_permission_deserializer.py +21 -0
  150. merge/resources/knowledgebase/types/field_permission_deserializer_request.py +21 -0
  151. merge/resources/knowledgebase/types/group.py +71 -0
  152. merge/resources/knowledgebase/types/group_parent_group.py +9 -0
  153. merge/resources/knowledgebase/types/group_users_item.py +7 -0
  154. merge/resources/knowledgebase/types/individual_common_model_scope_deserializer.py +24 -0
  155. merge/resources/knowledgebase/types/individual_common_model_scope_deserializer_request.py +24 -0
  156. merge/resources/knowledgebase/types/issue.py +36 -0
  157. merge/resources/knowledgebase/types/issue_status.py +7 -0
  158. merge/resources/knowledgebase/types/issue_status_enum.py +22 -0
  159. merge/resources/knowledgebase/types/language_enum.py +22 -0
  160. merge/resources/knowledgebase/types/last_sync_result_enum.py +46 -0
  161. merge/resources/knowledgebase/types/link_token.py +22 -0
  162. merge/resources/knowledgebase/types/method_enum.py +51 -0
  163. merge/resources/knowledgebase/types/model_operation.py +32 -0
  164. merge/resources/knowledgebase/types/model_permission_deserializer.py +20 -0
  165. merge/resources/knowledgebase/types/model_permission_deserializer_request.py +20 -0
  166. merge/resources/knowledgebase/types/multipart_form_field_request.py +57 -0
  167. merge/resources/knowledgebase/types/multipart_form_field_request_encoding.py +7 -0
  168. merge/resources/knowledgebase/types/paginated_account_details_and_actions_list.py +23 -0
  169. merge/resources/knowledgebase/types/paginated_article_list.py +30 -0
  170. merge/resources/knowledgebase/types/paginated_attachment_list.py +23 -0
  171. merge/resources/knowledgebase/types/paginated_audit_log_event_list.py +23 -0
  172. merge/resources/knowledgebase/types/paginated_container_list.py +30 -0
  173. merge/resources/knowledgebase/types/paginated_group_list.py +29 -0
  174. merge/resources/knowledgebase/types/paginated_issue_list.py +23 -0
  175. merge/resources/knowledgebase/types/paginated_sync_status_list.py +23 -0
  176. merge/resources/knowledgebase/types/paginated_user_list.py +23 -0
  177. merge/resources/knowledgebase/types/permission.py +77 -0
  178. merge/resources/knowledgebase/types/permission_group.py +7 -0
  179. merge/resources/knowledgebase/types/permission_type.py +7 -0
  180. merge/resources/knowledgebase/types/permission_type_enum.py +36 -0
  181. merge/resources/knowledgebase/types/permission_user.py +7 -0
  182. merge/resources/knowledgebase/types/remote_data.py +34 -0
  183. merge/resources/knowledgebase/types/remote_endpoint_info.py +22 -0
  184. merge/resources/knowledgebase/types/remote_field_api.py +28 -0
  185. merge/resources/knowledgebase/types/remote_field_api_advanced_metadata.py +7 -0
  186. merge/resources/knowledgebase/types/remote_field_api_coverage.py +5 -0
  187. merge/resources/knowledgebase/types/remote_field_api_response.py +25 -0
  188. merge/resources/knowledgebase/types/remote_key.py +30 -0
  189. merge/resources/knowledgebase/types/remote_response.py +36 -0
  190. merge/resources/knowledgebase/types/remote_response_response_type.py +7 -0
  191. merge/resources/knowledgebase/types/request_format_enum.py +31 -0
  192. merge/resources/knowledgebase/types/response_type_enum.py +22 -0
  193. merge/resources/knowledgebase/types/role_enum.py +46 -0
  194. merge/resources/knowledgebase/types/roles_enum.py +31 -0
  195. merge/resources/knowledgebase/types/selective_sync_configurations_usage_enum.py +24 -0
  196. merge/resources/knowledgebase/types/status_3_c_6_enum.py +36 -0
  197. merge/resources/knowledgebase/types/status_fd_5_enum.py +46 -0
  198. merge/resources/knowledgebase/types/sync_status.py +41 -0
  199. merge/resources/knowledgebase/types/sync_status_last_sync_result.py +7 -0
  200. merge/resources/knowledgebase/types/sync_status_status.py +7 -0
  201. merge/resources/knowledgebase/types/user.py +60 -0
  202. merge/resources/knowledgebase/types/validation_problem_source.py +20 -0
  203. merge/resources/knowledgebase/types/visibility_enum.py +31 -0
  204. merge/resources/knowledgebase/types/warning_validation_problem.py +24 -0
  205. merge/resources/knowledgebase/types/webhook_receiver.py +22 -0
  206. {mergepythonclient-2.3.2.dist-info → mergepythonclient-2.4.0.dist-info}/METADATA +2 -1
  207. {mergepythonclient-2.3.2.dist-info → mergepythonclient-2.4.0.dist-info}/RECORD +209 -8
  208. {mergepythonclient-2.3.2.dist-info → mergepythonclient-2.4.0.dist-info}/LICENSE.md +0 -0
  209. {mergepythonclient-2.3.2.dist-info → mergepythonclient-2.4.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,256 @@
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.request_options import RequestOptions
10
+ from .....core.unchecked_base_model import construct_type
11
+ from ...types.categories_enum import CategoriesEnum
12
+ from ...types.common_model_scopes_body_request import CommonModelScopesBodyRequest
13
+ from ...types.individual_common_model_scope_deserializer_request import IndividualCommonModelScopeDeserializerRequest
14
+ from ...types.link_token import LinkToken
15
+ from .types.end_user_details_request_language import EndUserDetailsRequestLanguage
16
+
17
+ # this is used as the default value for optional parameters
18
+ OMIT = typing.cast(typing.Any, ...)
19
+
20
+
21
+ class RawLinkTokenClient:
22
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
23
+ self._client_wrapper = client_wrapper
24
+
25
+ def create(
26
+ self,
27
+ *,
28
+ end_user_email_address: str,
29
+ end_user_organization_name: str,
30
+ end_user_origin_id: str,
31
+ categories: typing.Sequence[CategoriesEnum],
32
+ integration: typing.Optional[str] = OMIT,
33
+ link_expiry_mins: typing.Optional[int] = OMIT,
34
+ should_create_magic_link_url: typing.Optional[bool] = OMIT,
35
+ hide_admin_magic_link: typing.Optional[bool] = OMIT,
36
+ common_models: typing.Optional[typing.Sequence[CommonModelScopesBodyRequest]] = OMIT,
37
+ category_common_model_scopes: typing.Optional[
38
+ typing.Dict[str, typing.Optional[typing.Sequence[IndividualCommonModelScopeDeserializerRequest]]]
39
+ ] = OMIT,
40
+ language: typing.Optional[EndUserDetailsRequestLanguage] = OMIT,
41
+ are_syncs_disabled: typing.Optional[bool] = OMIT,
42
+ integration_specific_config: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
43
+ request_options: typing.Optional[RequestOptions] = None,
44
+ ) -> HttpResponse[LinkToken]:
45
+ """
46
+ Creates a link token to be used when linking a new end user.
47
+
48
+ Parameters
49
+ ----------
50
+ end_user_email_address : str
51
+ Your end user's email address. This is purely for identification purposes - setting this value will not cause any emails to be sent.
52
+
53
+ end_user_organization_name : str
54
+ Your end user's organization.
55
+
56
+ end_user_origin_id : str
57
+ This unique identifier typically represents the ID for your end user in your product's database. This value must be distinct from other Linked Accounts' unique identifiers.
58
+
59
+ categories : typing.Sequence[CategoriesEnum]
60
+ The integration categories to show in Merge Link.
61
+
62
+ integration : typing.Optional[str]
63
+ The slug of a specific pre-selected integration for this linking flow token. For examples of slugs, see https://docs.merge.dev/guides/merge-link/single-integration/.
64
+
65
+ link_expiry_mins : typing.Optional[int]
66
+ An integer number of minutes between [30, 720 or 10080 if for a Magic Link URL] for how long this token is valid. Defaults to 30.
67
+
68
+ should_create_magic_link_url : typing.Optional[bool]
69
+ Whether to generate a Magic Link URL. Defaults to false. For more information on Magic Link, see https://merge.dev/blog/integrations-fast-say-hello-to-magic-link.
70
+
71
+ hide_admin_magic_link : typing.Optional[bool]
72
+ Whether to generate a Magic Link URL on the Admin Needed screen during the linking flow. Defaults to false. For more information on Magic Link, see https://merge.dev/blog/integrations-fast-say-hello-to-magic-link.
73
+
74
+ common_models : typing.Optional[typing.Sequence[CommonModelScopesBodyRequest]]
75
+ An array of objects to specify the models and fields that will be disabled for a given Linked Account. Each object uses model_id, enabled_actions, and disabled_fields to specify the model, method, and fields that are scoped for a given Linked Account.
76
+
77
+ category_common_model_scopes : typing.Optional[typing.Dict[str, typing.Optional[typing.Sequence[IndividualCommonModelScopeDeserializerRequest]]]]
78
+ When creating a Link Token, you can set permissions for Common Models that will apply to the account that is going to be linked. Any model or field not specified in link token payload will default to existing settings.
79
+
80
+ language : typing.Optional[EndUserDetailsRequestLanguage]
81
+ The following subset of IETF language tags can be used to configure localization.
82
+
83
+ * `en` - en
84
+ * `de` - de
85
+
86
+ are_syncs_disabled : typing.Optional[bool]
87
+ The boolean that indicates whether initial, periodic, and force syncs will be disabled.
88
+
89
+ integration_specific_config : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
90
+ A JSON object containing integration-specific configuration options.
91
+
92
+ request_options : typing.Optional[RequestOptions]
93
+ Request-specific configuration.
94
+
95
+ Returns
96
+ -------
97
+ HttpResponse[LinkToken]
98
+
99
+ """
100
+ _response = self._client_wrapper.httpx_client.request(
101
+ "knowledgebase/v1/link-token",
102
+ method="POST",
103
+ json={
104
+ "end_user_email_address": end_user_email_address,
105
+ "end_user_organization_name": end_user_organization_name,
106
+ "end_user_origin_id": end_user_origin_id,
107
+ "categories": categories,
108
+ "integration": integration,
109
+ "link_expiry_mins": link_expiry_mins,
110
+ "should_create_magic_link_url": should_create_magic_link_url,
111
+ "hide_admin_magic_link": hide_admin_magic_link,
112
+ "common_models": common_models,
113
+ "category_common_model_scopes": category_common_model_scopes,
114
+ "language": language,
115
+ "are_syncs_disabled": are_syncs_disabled,
116
+ "integration_specific_config": integration_specific_config,
117
+ },
118
+ headers={
119
+ "content-type": "application/json",
120
+ },
121
+ request_options=request_options,
122
+ omit=OMIT,
123
+ )
124
+ try:
125
+ if 200 <= _response.status_code < 300:
126
+ _data = typing.cast(
127
+ LinkToken,
128
+ construct_type(
129
+ type_=LinkToken, # type: ignore
130
+ object_=_response.json(),
131
+ ),
132
+ )
133
+ return HttpResponse(response=_response, data=_data)
134
+ _response_json = _response.json()
135
+ except JSONDecodeError:
136
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
137
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
138
+
139
+
140
+ class AsyncRawLinkTokenClient:
141
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
142
+ self._client_wrapper = client_wrapper
143
+
144
+ async def create(
145
+ self,
146
+ *,
147
+ end_user_email_address: str,
148
+ end_user_organization_name: str,
149
+ end_user_origin_id: str,
150
+ categories: typing.Sequence[CategoriesEnum],
151
+ integration: typing.Optional[str] = OMIT,
152
+ link_expiry_mins: typing.Optional[int] = OMIT,
153
+ should_create_magic_link_url: typing.Optional[bool] = OMIT,
154
+ hide_admin_magic_link: typing.Optional[bool] = OMIT,
155
+ common_models: typing.Optional[typing.Sequence[CommonModelScopesBodyRequest]] = OMIT,
156
+ category_common_model_scopes: typing.Optional[
157
+ typing.Dict[str, typing.Optional[typing.Sequence[IndividualCommonModelScopeDeserializerRequest]]]
158
+ ] = OMIT,
159
+ language: typing.Optional[EndUserDetailsRequestLanguage] = OMIT,
160
+ are_syncs_disabled: typing.Optional[bool] = OMIT,
161
+ integration_specific_config: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
162
+ request_options: typing.Optional[RequestOptions] = None,
163
+ ) -> AsyncHttpResponse[LinkToken]:
164
+ """
165
+ Creates a link token to be used when linking a new end user.
166
+
167
+ Parameters
168
+ ----------
169
+ end_user_email_address : str
170
+ Your end user's email address. This is purely for identification purposes - setting this value will not cause any emails to be sent.
171
+
172
+ end_user_organization_name : str
173
+ Your end user's organization.
174
+
175
+ end_user_origin_id : str
176
+ This unique identifier typically represents the ID for your end user in your product's database. This value must be distinct from other Linked Accounts' unique identifiers.
177
+
178
+ categories : typing.Sequence[CategoriesEnum]
179
+ The integration categories to show in Merge Link.
180
+
181
+ integration : typing.Optional[str]
182
+ The slug of a specific pre-selected integration for this linking flow token. For examples of slugs, see https://docs.merge.dev/guides/merge-link/single-integration/.
183
+
184
+ link_expiry_mins : typing.Optional[int]
185
+ An integer number of minutes between [30, 720 or 10080 if for a Magic Link URL] for how long this token is valid. Defaults to 30.
186
+
187
+ should_create_magic_link_url : typing.Optional[bool]
188
+ Whether to generate a Magic Link URL. Defaults to false. For more information on Magic Link, see https://merge.dev/blog/integrations-fast-say-hello-to-magic-link.
189
+
190
+ hide_admin_magic_link : typing.Optional[bool]
191
+ Whether to generate a Magic Link URL on the Admin Needed screen during the linking flow. Defaults to false. For more information on Magic Link, see https://merge.dev/blog/integrations-fast-say-hello-to-magic-link.
192
+
193
+ common_models : typing.Optional[typing.Sequence[CommonModelScopesBodyRequest]]
194
+ An array of objects to specify the models and fields that will be disabled for a given Linked Account. Each object uses model_id, enabled_actions, and disabled_fields to specify the model, method, and fields that are scoped for a given Linked Account.
195
+
196
+ category_common_model_scopes : typing.Optional[typing.Dict[str, typing.Optional[typing.Sequence[IndividualCommonModelScopeDeserializerRequest]]]]
197
+ When creating a Link Token, you can set permissions for Common Models that will apply to the account that is going to be linked. Any model or field not specified in link token payload will default to existing settings.
198
+
199
+ language : typing.Optional[EndUserDetailsRequestLanguage]
200
+ The following subset of IETF language tags can be used to configure localization.
201
+
202
+ * `en` - en
203
+ * `de` - de
204
+
205
+ are_syncs_disabled : typing.Optional[bool]
206
+ The boolean that indicates whether initial, periodic, and force syncs will be disabled.
207
+
208
+ integration_specific_config : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
209
+ A JSON object containing integration-specific configuration options.
210
+
211
+ request_options : typing.Optional[RequestOptions]
212
+ Request-specific configuration.
213
+
214
+ Returns
215
+ -------
216
+ AsyncHttpResponse[LinkToken]
217
+
218
+ """
219
+ _response = await self._client_wrapper.httpx_client.request(
220
+ "knowledgebase/v1/link-token",
221
+ method="POST",
222
+ json={
223
+ "end_user_email_address": end_user_email_address,
224
+ "end_user_organization_name": end_user_organization_name,
225
+ "end_user_origin_id": end_user_origin_id,
226
+ "categories": categories,
227
+ "integration": integration,
228
+ "link_expiry_mins": link_expiry_mins,
229
+ "should_create_magic_link_url": should_create_magic_link_url,
230
+ "hide_admin_magic_link": hide_admin_magic_link,
231
+ "common_models": common_models,
232
+ "category_common_model_scopes": category_common_model_scopes,
233
+ "language": language,
234
+ "are_syncs_disabled": are_syncs_disabled,
235
+ "integration_specific_config": integration_specific_config,
236
+ },
237
+ headers={
238
+ "content-type": "application/json",
239
+ },
240
+ request_options=request_options,
241
+ omit=OMIT,
242
+ )
243
+ try:
244
+ if 200 <= _response.status_code < 300:
245
+ _data = typing.cast(
246
+ LinkToken,
247
+ construct_type(
248
+ type_=LinkToken, # type: ignore
249
+ object_=_response.json(),
250
+ ),
251
+ )
252
+ return AsyncHttpResponse(response=_response, data=_data)
253
+ _response_json = _response.json()
254
+ except JSONDecodeError:
255
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
256
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
@@ -0,0 +1,32 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .end_user_details_request_language import EndUserDetailsRequestLanguage
10
+ _dynamic_imports: typing.Dict[str, str] = {"EndUserDetailsRequestLanguage": ".end_user_details_request_language"}
11
+
12
+
13
+ def __getattr__(attr_name: str) -> typing.Any:
14
+ module_name = _dynamic_imports.get(attr_name)
15
+ if module_name is None:
16
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
17
+ try:
18
+ module = import_module(module_name, __package__)
19
+ result = getattr(module, attr_name)
20
+ return result
21
+ except ImportError as e:
22
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
23
+ except AttributeError as e:
24
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
25
+
26
+
27
+ def __dir__():
28
+ lazy_attrs = list(_dynamic_imports.keys())
29
+ return sorted(lazy_attrs)
30
+
31
+
32
+ __all__ = ["EndUserDetailsRequestLanguage"]
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from ....types.language_enum import LanguageEnum
6
+
7
+ EndUserDetailsRequestLanguage = typing.Union[LanguageEnum, str]
@@ -0,0 +1,32 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .types import LinkedAccountsListRequestCategory
10
+ _dynamic_imports: typing.Dict[str, str] = {"LinkedAccountsListRequestCategory": ".types"}
11
+
12
+
13
+ def __getattr__(attr_name: str) -> typing.Any:
14
+ module_name = _dynamic_imports.get(attr_name)
15
+ if module_name is None:
16
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
17
+ try:
18
+ module = import_module(module_name, __package__)
19
+ result = getattr(module, attr_name)
20
+ return result
21
+ except ImportError as e:
22
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
23
+ except AttributeError as e:
24
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
25
+
26
+
27
+ def __dir__():
28
+ lazy_attrs = list(_dynamic_imports.keys())
29
+ return sorted(lazy_attrs)
30
+
31
+
32
+ __all__ = ["LinkedAccountsListRequestCategory"]
@@ -0,0 +1,265 @@
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.paginated_account_details_and_actions_list import PaginatedAccountDetailsAndActionsList
8
+ from .raw_client import AsyncRawLinkedAccountsClient, RawLinkedAccountsClient
9
+ from .types.linked_accounts_list_request_category import LinkedAccountsListRequestCategory
10
+
11
+
12
+ class LinkedAccountsClient:
13
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
14
+ self._raw_client = RawLinkedAccountsClient(client_wrapper=client_wrapper)
15
+
16
+ @property
17
+ def with_raw_response(self) -> RawLinkedAccountsClient:
18
+ """
19
+ Retrieves a raw implementation of this client that returns raw responses.
20
+
21
+ Returns
22
+ -------
23
+ RawLinkedAccountsClient
24
+ """
25
+ return self._raw_client
26
+
27
+ def list(
28
+ self,
29
+ *,
30
+ category: typing.Optional[LinkedAccountsListRequestCategory] = None,
31
+ cursor: typing.Optional[str] = None,
32
+ end_user_email_address: typing.Optional[str] = None,
33
+ end_user_organization_name: typing.Optional[str] = None,
34
+ end_user_origin_id: typing.Optional[str] = None,
35
+ end_user_origin_ids: typing.Optional[str] = None,
36
+ id: typing.Optional[str] = None,
37
+ ids: typing.Optional[str] = None,
38
+ include_duplicates: typing.Optional[bool] = None,
39
+ integration_name: typing.Optional[str] = None,
40
+ is_test_account: typing.Optional[str] = None,
41
+ page_size: typing.Optional[int] = None,
42
+ status: typing.Optional[str] = None,
43
+ request_options: typing.Optional[RequestOptions] = None,
44
+ ) -> PaginatedAccountDetailsAndActionsList:
45
+ """
46
+ List linked accounts for your organization.
47
+
48
+ Parameters
49
+ ----------
50
+ category : typing.Optional[LinkedAccountsListRequestCategory]
51
+ Options: `accounting`, `ats`, `crm`, `filestorage`, `hris`, `knowledgebase`, `mktg`, `ticketing`
52
+
53
+ * `hris` - hris
54
+ * `ats` - ats
55
+ * `accounting` - accounting
56
+ * `ticketing` - ticketing
57
+ * `crm` - crm
58
+ * `mktg` - mktg
59
+ * `filestorage` - filestorage
60
+ * `knowledgebase` - knowledgebase
61
+
62
+ cursor : typing.Optional[str]
63
+ The pagination cursor value.
64
+
65
+ end_user_email_address : typing.Optional[str]
66
+ If provided, will only return linked accounts associated with the given email address.
67
+
68
+ end_user_organization_name : typing.Optional[str]
69
+ If provided, will only return linked accounts associated with the given organization name.
70
+
71
+ end_user_origin_id : typing.Optional[str]
72
+ If provided, will only return linked accounts associated with the given origin ID.
73
+
74
+ end_user_origin_ids : typing.Optional[str]
75
+ Comma-separated list of EndUser origin IDs, making it possible to specify multiple EndUsers at once.
76
+
77
+ id : typing.Optional[str]
78
+
79
+ ids : typing.Optional[str]
80
+ Comma-separated list of LinkedAccount IDs, making it possible to specify multiple LinkedAccounts at once.
81
+
82
+ include_duplicates : typing.Optional[bool]
83
+ If `true`, will include complete production duplicates of the account specified by the `id` query parameter in the response. `id` must be for a complete production linked account.
84
+
85
+ integration_name : typing.Optional[str]
86
+ If provided, will only return linked accounts associated with the given integration name.
87
+
88
+ is_test_account : typing.Optional[str]
89
+ If included, will only include test linked accounts. If not included, will only include non-test linked accounts.
90
+
91
+ page_size : typing.Optional[int]
92
+ Number of results to return per page.
93
+
94
+ status : typing.Optional[str]
95
+ Filter by status. Options: `COMPLETE`, `IDLE`, `INCOMPLETE`, `RELINK_NEEDED`
96
+
97
+ request_options : typing.Optional[RequestOptions]
98
+ Request-specific configuration.
99
+
100
+ Returns
101
+ -------
102
+ PaginatedAccountDetailsAndActionsList
103
+
104
+
105
+ Examples
106
+ --------
107
+ from merge import Merge
108
+
109
+ client = Merge(
110
+ account_token="YOUR_ACCOUNT_TOKEN",
111
+ api_key="YOUR_API_KEY",
112
+ )
113
+ client.knowledgebase.linked_accounts.list(
114
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
115
+ )
116
+ """
117
+ _response = self._raw_client.list(
118
+ category=category,
119
+ cursor=cursor,
120
+ end_user_email_address=end_user_email_address,
121
+ end_user_organization_name=end_user_organization_name,
122
+ end_user_origin_id=end_user_origin_id,
123
+ end_user_origin_ids=end_user_origin_ids,
124
+ id=id,
125
+ ids=ids,
126
+ include_duplicates=include_duplicates,
127
+ integration_name=integration_name,
128
+ is_test_account=is_test_account,
129
+ page_size=page_size,
130
+ status=status,
131
+ request_options=request_options,
132
+ )
133
+ return _response.data
134
+
135
+
136
+ class AsyncLinkedAccountsClient:
137
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
138
+ self._raw_client = AsyncRawLinkedAccountsClient(client_wrapper=client_wrapper)
139
+
140
+ @property
141
+ def with_raw_response(self) -> AsyncRawLinkedAccountsClient:
142
+ """
143
+ Retrieves a raw implementation of this client that returns raw responses.
144
+
145
+ Returns
146
+ -------
147
+ AsyncRawLinkedAccountsClient
148
+ """
149
+ return self._raw_client
150
+
151
+ async def list(
152
+ self,
153
+ *,
154
+ category: typing.Optional[LinkedAccountsListRequestCategory] = None,
155
+ cursor: typing.Optional[str] = None,
156
+ end_user_email_address: typing.Optional[str] = None,
157
+ end_user_organization_name: typing.Optional[str] = None,
158
+ end_user_origin_id: typing.Optional[str] = None,
159
+ end_user_origin_ids: typing.Optional[str] = None,
160
+ id: typing.Optional[str] = None,
161
+ ids: typing.Optional[str] = None,
162
+ include_duplicates: typing.Optional[bool] = None,
163
+ integration_name: typing.Optional[str] = None,
164
+ is_test_account: typing.Optional[str] = None,
165
+ page_size: typing.Optional[int] = None,
166
+ status: typing.Optional[str] = None,
167
+ request_options: typing.Optional[RequestOptions] = None,
168
+ ) -> PaginatedAccountDetailsAndActionsList:
169
+ """
170
+ List linked accounts for your organization.
171
+
172
+ Parameters
173
+ ----------
174
+ category : typing.Optional[LinkedAccountsListRequestCategory]
175
+ Options: `accounting`, `ats`, `crm`, `filestorage`, `hris`, `knowledgebase`, `mktg`, `ticketing`
176
+
177
+ * `hris` - hris
178
+ * `ats` - ats
179
+ * `accounting` - accounting
180
+ * `ticketing` - ticketing
181
+ * `crm` - crm
182
+ * `mktg` - mktg
183
+ * `filestorage` - filestorage
184
+ * `knowledgebase` - knowledgebase
185
+
186
+ cursor : typing.Optional[str]
187
+ The pagination cursor value.
188
+
189
+ end_user_email_address : typing.Optional[str]
190
+ If provided, will only return linked accounts associated with the given email address.
191
+
192
+ end_user_organization_name : typing.Optional[str]
193
+ If provided, will only return linked accounts associated with the given organization name.
194
+
195
+ end_user_origin_id : typing.Optional[str]
196
+ If provided, will only return linked accounts associated with the given origin ID.
197
+
198
+ end_user_origin_ids : typing.Optional[str]
199
+ Comma-separated list of EndUser origin IDs, making it possible to specify multiple EndUsers at once.
200
+
201
+ id : typing.Optional[str]
202
+
203
+ ids : typing.Optional[str]
204
+ Comma-separated list of LinkedAccount IDs, making it possible to specify multiple LinkedAccounts at once.
205
+
206
+ include_duplicates : typing.Optional[bool]
207
+ If `true`, will include complete production duplicates of the account specified by the `id` query parameter in the response. `id` must be for a complete production linked account.
208
+
209
+ integration_name : typing.Optional[str]
210
+ If provided, will only return linked accounts associated with the given integration name.
211
+
212
+ is_test_account : typing.Optional[str]
213
+ If included, will only include test linked accounts. If not included, will only include non-test linked accounts.
214
+
215
+ page_size : typing.Optional[int]
216
+ Number of results to return per page.
217
+
218
+ status : typing.Optional[str]
219
+ Filter by status. Options: `COMPLETE`, `IDLE`, `INCOMPLETE`, `RELINK_NEEDED`
220
+
221
+ request_options : typing.Optional[RequestOptions]
222
+ Request-specific configuration.
223
+
224
+ Returns
225
+ -------
226
+ PaginatedAccountDetailsAndActionsList
227
+
228
+
229
+ Examples
230
+ --------
231
+ import asyncio
232
+
233
+ from merge import AsyncMerge
234
+
235
+ client = AsyncMerge(
236
+ account_token="YOUR_ACCOUNT_TOKEN",
237
+ api_key="YOUR_API_KEY",
238
+ )
239
+
240
+
241
+ async def main() -> None:
242
+ await client.knowledgebase.linked_accounts.list(
243
+ cursor="cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
244
+ )
245
+
246
+
247
+ asyncio.run(main())
248
+ """
249
+ _response = await self._raw_client.list(
250
+ category=category,
251
+ cursor=cursor,
252
+ end_user_email_address=end_user_email_address,
253
+ end_user_organization_name=end_user_organization_name,
254
+ end_user_origin_id=end_user_origin_id,
255
+ end_user_origin_ids=end_user_origin_ids,
256
+ id=id,
257
+ ids=ids,
258
+ include_duplicates=include_duplicates,
259
+ integration_name=integration_name,
260
+ is_test_account=is_test_account,
261
+ page_size=page_size,
262
+ status=status,
263
+ request_options=request_options,
264
+ )
265
+ return _response.data