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,336 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+ from json.decoder import JSONDecodeError
6
+
7
+ from .....core.api_error import ApiError
8
+ from .....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
9
+ from .....core.datetime_utils import serialize_datetime
10
+ from .....core.http_response import AsyncHttpResponse, HttpResponse
11
+ from .....core.jsonable_encoder import jsonable_encoder
12
+ from .....core.request_options import RequestOptions
13
+ from .....core.unchecked_base_model import construct_type
14
+ from ...types.issue import Issue
15
+ from ...types.paginated_issue_list import PaginatedIssueList
16
+ from .types.issues_list_request_status import IssuesListRequestStatus
17
+
18
+
19
+ class RawIssuesClient:
20
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
21
+ self._client_wrapper = client_wrapper
22
+
23
+ def list(
24
+ self,
25
+ *,
26
+ account_token: typing.Optional[str] = None,
27
+ cursor: typing.Optional[str] = None,
28
+ end_date: typing.Optional[str] = None,
29
+ end_user_organization_name: typing.Optional[str] = None,
30
+ first_incident_time_after: typing.Optional[dt.datetime] = None,
31
+ first_incident_time_before: typing.Optional[dt.datetime] = None,
32
+ include_muted: typing.Optional[str] = None,
33
+ integration_name: typing.Optional[str] = None,
34
+ last_incident_time_after: typing.Optional[dt.datetime] = None,
35
+ last_incident_time_before: typing.Optional[dt.datetime] = None,
36
+ linked_account_id: typing.Optional[str] = None,
37
+ page_size: typing.Optional[int] = None,
38
+ start_date: typing.Optional[str] = None,
39
+ status: typing.Optional[IssuesListRequestStatus] = None,
40
+ request_options: typing.Optional[RequestOptions] = None,
41
+ ) -> HttpResponse[PaginatedIssueList]:
42
+ """
43
+ Gets all issues for Organization.
44
+
45
+ Parameters
46
+ ----------
47
+ account_token : typing.Optional[str]
48
+
49
+ cursor : typing.Optional[str]
50
+ The pagination cursor value.
51
+
52
+ end_date : typing.Optional[str]
53
+ If included, will only include issues whose most recent action occurred before this time
54
+
55
+ end_user_organization_name : typing.Optional[str]
56
+
57
+ first_incident_time_after : typing.Optional[dt.datetime]
58
+ If provided, will only return issues whose first incident time was after this datetime.
59
+
60
+ first_incident_time_before : typing.Optional[dt.datetime]
61
+ If provided, will only return issues whose first incident time was before this datetime.
62
+
63
+ include_muted : typing.Optional[str]
64
+ If true, will include muted issues
65
+
66
+ integration_name : typing.Optional[str]
67
+
68
+ last_incident_time_after : typing.Optional[dt.datetime]
69
+ If provided, will only return issues whose last incident time was after this datetime.
70
+
71
+ last_incident_time_before : typing.Optional[dt.datetime]
72
+ If provided, will only return issues whose last incident time was before this datetime.
73
+
74
+ linked_account_id : typing.Optional[str]
75
+ If provided, will only include issues pertaining to the linked account passed in.
76
+
77
+ page_size : typing.Optional[int]
78
+ Number of results to return per page.
79
+
80
+ start_date : typing.Optional[str]
81
+ If included, will only include issues whose most recent action occurred after this time
82
+
83
+ status : typing.Optional[IssuesListRequestStatus]
84
+ Status of the issue. Options: ('ONGOING', 'RESOLVED')
85
+
86
+ * `ONGOING` - ONGOING
87
+ * `RESOLVED` - RESOLVED
88
+
89
+ request_options : typing.Optional[RequestOptions]
90
+ Request-specific configuration.
91
+
92
+ Returns
93
+ -------
94
+ HttpResponse[PaginatedIssueList]
95
+
96
+ """
97
+ _response = self._client_wrapper.httpx_client.request(
98
+ "knowledgebase/v1/issues",
99
+ method="GET",
100
+ params={
101
+ "account_token": account_token,
102
+ "cursor": cursor,
103
+ "end_date": end_date,
104
+ "end_user_organization_name": end_user_organization_name,
105
+ "first_incident_time_after": serialize_datetime(first_incident_time_after)
106
+ if first_incident_time_after is not None
107
+ else None,
108
+ "first_incident_time_before": serialize_datetime(first_incident_time_before)
109
+ if first_incident_time_before is not None
110
+ else None,
111
+ "include_muted": include_muted,
112
+ "integration_name": integration_name,
113
+ "last_incident_time_after": serialize_datetime(last_incident_time_after)
114
+ if last_incident_time_after is not None
115
+ else None,
116
+ "last_incident_time_before": serialize_datetime(last_incident_time_before)
117
+ if last_incident_time_before is not None
118
+ else None,
119
+ "linked_account_id": linked_account_id,
120
+ "page_size": page_size,
121
+ "start_date": start_date,
122
+ "status": status,
123
+ },
124
+ request_options=request_options,
125
+ )
126
+ try:
127
+ if 200 <= _response.status_code < 300:
128
+ _data = typing.cast(
129
+ PaginatedIssueList,
130
+ construct_type(
131
+ type_=PaginatedIssueList, # type: ignore
132
+ object_=_response.json(),
133
+ ),
134
+ )
135
+ return HttpResponse(response=_response, data=_data)
136
+ _response_json = _response.json()
137
+ except JSONDecodeError:
138
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
139
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
140
+
141
+ def retrieve(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[Issue]:
142
+ """
143
+ Get a specific issue.
144
+
145
+ Parameters
146
+ ----------
147
+ id : str
148
+
149
+ request_options : typing.Optional[RequestOptions]
150
+ Request-specific configuration.
151
+
152
+ Returns
153
+ -------
154
+ HttpResponse[Issue]
155
+
156
+ """
157
+ _response = self._client_wrapper.httpx_client.request(
158
+ f"knowledgebase/v1/issues/{jsonable_encoder(id)}",
159
+ method="GET",
160
+ request_options=request_options,
161
+ )
162
+ try:
163
+ if 200 <= _response.status_code < 300:
164
+ _data = typing.cast(
165
+ Issue,
166
+ construct_type(
167
+ type_=Issue, # type: ignore
168
+ object_=_response.json(),
169
+ ),
170
+ )
171
+ return HttpResponse(response=_response, data=_data)
172
+ _response_json = _response.json()
173
+ except JSONDecodeError:
174
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
175
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
176
+
177
+
178
+ class AsyncRawIssuesClient:
179
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
180
+ self._client_wrapper = client_wrapper
181
+
182
+ async def list(
183
+ self,
184
+ *,
185
+ account_token: typing.Optional[str] = None,
186
+ cursor: typing.Optional[str] = None,
187
+ end_date: typing.Optional[str] = None,
188
+ end_user_organization_name: typing.Optional[str] = None,
189
+ first_incident_time_after: typing.Optional[dt.datetime] = None,
190
+ first_incident_time_before: typing.Optional[dt.datetime] = None,
191
+ include_muted: typing.Optional[str] = None,
192
+ integration_name: typing.Optional[str] = None,
193
+ last_incident_time_after: typing.Optional[dt.datetime] = None,
194
+ last_incident_time_before: typing.Optional[dt.datetime] = None,
195
+ linked_account_id: typing.Optional[str] = None,
196
+ page_size: typing.Optional[int] = None,
197
+ start_date: typing.Optional[str] = None,
198
+ status: typing.Optional[IssuesListRequestStatus] = None,
199
+ request_options: typing.Optional[RequestOptions] = None,
200
+ ) -> AsyncHttpResponse[PaginatedIssueList]:
201
+ """
202
+ Gets all issues for Organization.
203
+
204
+ Parameters
205
+ ----------
206
+ account_token : typing.Optional[str]
207
+
208
+ cursor : typing.Optional[str]
209
+ The pagination cursor value.
210
+
211
+ end_date : typing.Optional[str]
212
+ If included, will only include issues whose most recent action occurred before this time
213
+
214
+ end_user_organization_name : typing.Optional[str]
215
+
216
+ first_incident_time_after : typing.Optional[dt.datetime]
217
+ If provided, will only return issues whose first incident time was after this datetime.
218
+
219
+ first_incident_time_before : typing.Optional[dt.datetime]
220
+ If provided, will only return issues whose first incident time was before this datetime.
221
+
222
+ include_muted : typing.Optional[str]
223
+ If true, will include muted issues
224
+
225
+ integration_name : typing.Optional[str]
226
+
227
+ last_incident_time_after : typing.Optional[dt.datetime]
228
+ If provided, will only return issues whose last incident time was after this datetime.
229
+
230
+ last_incident_time_before : typing.Optional[dt.datetime]
231
+ If provided, will only return issues whose last incident time was before this datetime.
232
+
233
+ linked_account_id : typing.Optional[str]
234
+ If provided, will only include issues pertaining to the linked account passed in.
235
+
236
+ page_size : typing.Optional[int]
237
+ Number of results to return per page.
238
+
239
+ start_date : typing.Optional[str]
240
+ If included, will only include issues whose most recent action occurred after this time
241
+
242
+ status : typing.Optional[IssuesListRequestStatus]
243
+ Status of the issue. Options: ('ONGOING', 'RESOLVED')
244
+
245
+ * `ONGOING` - ONGOING
246
+ * `RESOLVED` - RESOLVED
247
+
248
+ request_options : typing.Optional[RequestOptions]
249
+ Request-specific configuration.
250
+
251
+ Returns
252
+ -------
253
+ AsyncHttpResponse[PaginatedIssueList]
254
+
255
+ """
256
+ _response = await self._client_wrapper.httpx_client.request(
257
+ "knowledgebase/v1/issues",
258
+ method="GET",
259
+ params={
260
+ "account_token": account_token,
261
+ "cursor": cursor,
262
+ "end_date": end_date,
263
+ "end_user_organization_name": end_user_organization_name,
264
+ "first_incident_time_after": serialize_datetime(first_incident_time_after)
265
+ if first_incident_time_after is not None
266
+ else None,
267
+ "first_incident_time_before": serialize_datetime(first_incident_time_before)
268
+ if first_incident_time_before is not None
269
+ else None,
270
+ "include_muted": include_muted,
271
+ "integration_name": integration_name,
272
+ "last_incident_time_after": serialize_datetime(last_incident_time_after)
273
+ if last_incident_time_after is not None
274
+ else None,
275
+ "last_incident_time_before": serialize_datetime(last_incident_time_before)
276
+ if last_incident_time_before is not None
277
+ else None,
278
+ "linked_account_id": linked_account_id,
279
+ "page_size": page_size,
280
+ "start_date": start_date,
281
+ "status": status,
282
+ },
283
+ request_options=request_options,
284
+ )
285
+ try:
286
+ if 200 <= _response.status_code < 300:
287
+ _data = typing.cast(
288
+ PaginatedIssueList,
289
+ construct_type(
290
+ type_=PaginatedIssueList, # type: ignore
291
+ object_=_response.json(),
292
+ ),
293
+ )
294
+ return AsyncHttpResponse(response=_response, data=_data)
295
+ _response_json = _response.json()
296
+ except JSONDecodeError:
297
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
298
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
299
+
300
+ async def retrieve(
301
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
302
+ ) -> AsyncHttpResponse[Issue]:
303
+ """
304
+ Get a specific issue.
305
+
306
+ Parameters
307
+ ----------
308
+ id : str
309
+
310
+ request_options : typing.Optional[RequestOptions]
311
+ Request-specific configuration.
312
+
313
+ Returns
314
+ -------
315
+ AsyncHttpResponse[Issue]
316
+
317
+ """
318
+ _response = await self._client_wrapper.httpx_client.request(
319
+ f"knowledgebase/v1/issues/{jsonable_encoder(id)}",
320
+ method="GET",
321
+ request_options=request_options,
322
+ )
323
+ try:
324
+ if 200 <= _response.status_code < 300:
325
+ _data = typing.cast(
326
+ Issue,
327
+ construct_type(
328
+ type_=Issue, # type: ignore
329
+ object_=_response.json(),
330
+ ),
331
+ )
332
+ return AsyncHttpResponse(response=_response, data=_data)
333
+ _response_json = _response.json()
334
+ except JSONDecodeError:
335
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
336
+ 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 .issues_list_request_status import IssuesListRequestStatus
10
+ _dynamic_imports: typing.Dict[str, str] = {"IssuesListRequestStatus": ".issues_list_request_status"}
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__ = ["IssuesListRequestStatus"]
@@ -0,0 +1,17 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import enum
4
+ import typing
5
+
6
+ T_Result = typing.TypeVar("T_Result")
7
+
8
+
9
+ class IssuesListRequestStatus(str, enum.Enum):
10
+ ONGOING = "ONGOING"
11
+ RESOLVED = "RESOLVED"
12
+
13
+ def visit(self, ongoing: typing.Callable[[], T_Result], resolved: typing.Callable[[], T_Result]) -> T_Result:
14
+ if self is IssuesListRequestStatus.ONGOING:
15
+ return ongoing()
16
+ if self is IssuesListRequestStatus.RESOLVED:
17
+ return resolved()
@@ -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 EndUserDetailsRequestLanguage
10
+ _dynamic_imports: typing.Dict[str, str] = {"EndUserDetailsRequestLanguage": ".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__ = ["EndUserDetailsRequestLanguage"]
@@ -0,0 +1,273 @@
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.categories_enum import CategoriesEnum
8
+ from ...types.common_model_scopes_body_request import CommonModelScopesBodyRequest
9
+ from ...types.individual_common_model_scope_deserializer_request import IndividualCommonModelScopeDeserializerRequest
10
+ from ...types.link_token import LinkToken
11
+ from .raw_client import AsyncRawLinkTokenClient, RawLinkTokenClient
12
+ from .types.end_user_details_request_language import EndUserDetailsRequestLanguage
13
+
14
+ # this is used as the default value for optional parameters
15
+ OMIT = typing.cast(typing.Any, ...)
16
+
17
+
18
+ class LinkTokenClient:
19
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
20
+ self._raw_client = RawLinkTokenClient(client_wrapper=client_wrapper)
21
+
22
+ @property
23
+ def with_raw_response(self) -> RawLinkTokenClient:
24
+ """
25
+ Retrieves a raw implementation of this client that returns raw responses.
26
+
27
+ Returns
28
+ -------
29
+ RawLinkTokenClient
30
+ """
31
+ return self._raw_client
32
+
33
+ def create(
34
+ self,
35
+ *,
36
+ end_user_email_address: str,
37
+ end_user_organization_name: str,
38
+ end_user_origin_id: str,
39
+ categories: typing.Sequence[CategoriesEnum],
40
+ integration: typing.Optional[str] = OMIT,
41
+ link_expiry_mins: typing.Optional[int] = OMIT,
42
+ should_create_magic_link_url: typing.Optional[bool] = OMIT,
43
+ hide_admin_magic_link: typing.Optional[bool] = OMIT,
44
+ common_models: typing.Optional[typing.Sequence[CommonModelScopesBodyRequest]] = OMIT,
45
+ category_common_model_scopes: typing.Optional[
46
+ typing.Dict[str, typing.Optional[typing.Sequence[IndividualCommonModelScopeDeserializerRequest]]]
47
+ ] = OMIT,
48
+ language: typing.Optional[EndUserDetailsRequestLanguage] = OMIT,
49
+ are_syncs_disabled: typing.Optional[bool] = OMIT,
50
+ integration_specific_config: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
51
+ request_options: typing.Optional[RequestOptions] = None,
52
+ ) -> LinkToken:
53
+ """
54
+ Creates a link token to be used when linking a new end user.
55
+
56
+ Parameters
57
+ ----------
58
+ end_user_email_address : str
59
+ Your end user's email address. This is purely for identification purposes - setting this value will not cause any emails to be sent.
60
+
61
+ end_user_organization_name : str
62
+ Your end user's organization.
63
+
64
+ end_user_origin_id : str
65
+ 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.
66
+
67
+ categories : typing.Sequence[CategoriesEnum]
68
+ The integration categories to show in Merge Link.
69
+
70
+ integration : typing.Optional[str]
71
+ 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/.
72
+
73
+ link_expiry_mins : typing.Optional[int]
74
+ 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.
75
+
76
+ should_create_magic_link_url : typing.Optional[bool]
77
+ 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.
78
+
79
+ hide_admin_magic_link : typing.Optional[bool]
80
+ 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.
81
+
82
+ common_models : typing.Optional[typing.Sequence[CommonModelScopesBodyRequest]]
83
+ 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.
84
+
85
+ category_common_model_scopes : typing.Optional[typing.Dict[str, typing.Optional[typing.Sequence[IndividualCommonModelScopeDeserializerRequest]]]]
86
+ 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.
87
+
88
+ language : typing.Optional[EndUserDetailsRequestLanguage]
89
+ The following subset of IETF language tags can be used to configure localization.
90
+
91
+ * `en` - en
92
+ * `de` - de
93
+
94
+ are_syncs_disabled : typing.Optional[bool]
95
+ The boolean that indicates whether initial, periodic, and force syncs will be disabled.
96
+
97
+ integration_specific_config : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
98
+ A JSON object containing integration-specific configuration options.
99
+
100
+ request_options : typing.Optional[RequestOptions]
101
+ Request-specific configuration.
102
+
103
+ Returns
104
+ -------
105
+ LinkToken
106
+
107
+
108
+ Examples
109
+ --------
110
+ from merge import Merge
111
+ from merge.resources.knowledgebase import CategoriesEnum
112
+
113
+ client = Merge(
114
+ account_token="YOUR_ACCOUNT_TOKEN",
115
+ api_key="YOUR_API_KEY",
116
+ )
117
+ client.knowledgebase.link_token.create(
118
+ end_user_email_address="example@gmail.com",
119
+ end_user_organization_name="Test Organization",
120
+ end_user_origin_id="12345",
121
+ categories=[CategoriesEnum.HRIS, CategoriesEnum.ATS],
122
+ )
123
+ """
124
+ _response = self._raw_client.create(
125
+ end_user_email_address=end_user_email_address,
126
+ end_user_organization_name=end_user_organization_name,
127
+ end_user_origin_id=end_user_origin_id,
128
+ categories=categories,
129
+ integration=integration,
130
+ link_expiry_mins=link_expiry_mins,
131
+ should_create_magic_link_url=should_create_magic_link_url,
132
+ hide_admin_magic_link=hide_admin_magic_link,
133
+ common_models=common_models,
134
+ category_common_model_scopes=category_common_model_scopes,
135
+ language=language,
136
+ are_syncs_disabled=are_syncs_disabled,
137
+ integration_specific_config=integration_specific_config,
138
+ request_options=request_options,
139
+ )
140
+ return _response.data
141
+
142
+
143
+ class AsyncLinkTokenClient:
144
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
145
+ self._raw_client = AsyncRawLinkTokenClient(client_wrapper=client_wrapper)
146
+
147
+ @property
148
+ def with_raw_response(self) -> AsyncRawLinkTokenClient:
149
+ """
150
+ Retrieves a raw implementation of this client that returns raw responses.
151
+
152
+ Returns
153
+ -------
154
+ AsyncRawLinkTokenClient
155
+ """
156
+ return self._raw_client
157
+
158
+ async def create(
159
+ self,
160
+ *,
161
+ end_user_email_address: str,
162
+ end_user_organization_name: str,
163
+ end_user_origin_id: str,
164
+ categories: typing.Sequence[CategoriesEnum],
165
+ integration: typing.Optional[str] = OMIT,
166
+ link_expiry_mins: typing.Optional[int] = OMIT,
167
+ should_create_magic_link_url: typing.Optional[bool] = OMIT,
168
+ hide_admin_magic_link: typing.Optional[bool] = OMIT,
169
+ common_models: typing.Optional[typing.Sequence[CommonModelScopesBodyRequest]] = OMIT,
170
+ category_common_model_scopes: typing.Optional[
171
+ typing.Dict[str, typing.Optional[typing.Sequence[IndividualCommonModelScopeDeserializerRequest]]]
172
+ ] = OMIT,
173
+ language: typing.Optional[EndUserDetailsRequestLanguage] = OMIT,
174
+ are_syncs_disabled: typing.Optional[bool] = OMIT,
175
+ integration_specific_config: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
176
+ request_options: typing.Optional[RequestOptions] = None,
177
+ ) -> LinkToken:
178
+ """
179
+ Creates a link token to be used when linking a new end user.
180
+
181
+ Parameters
182
+ ----------
183
+ end_user_email_address : str
184
+ Your end user's email address. This is purely for identification purposes - setting this value will not cause any emails to be sent.
185
+
186
+ end_user_organization_name : str
187
+ Your end user's organization.
188
+
189
+ end_user_origin_id : str
190
+ 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.
191
+
192
+ categories : typing.Sequence[CategoriesEnum]
193
+ The integration categories to show in Merge Link.
194
+
195
+ integration : typing.Optional[str]
196
+ 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/.
197
+
198
+ link_expiry_mins : typing.Optional[int]
199
+ 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.
200
+
201
+ should_create_magic_link_url : typing.Optional[bool]
202
+ 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.
203
+
204
+ hide_admin_magic_link : typing.Optional[bool]
205
+ 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.
206
+
207
+ common_models : typing.Optional[typing.Sequence[CommonModelScopesBodyRequest]]
208
+ 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.
209
+
210
+ category_common_model_scopes : typing.Optional[typing.Dict[str, typing.Optional[typing.Sequence[IndividualCommonModelScopeDeserializerRequest]]]]
211
+ 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.
212
+
213
+ language : typing.Optional[EndUserDetailsRequestLanguage]
214
+ The following subset of IETF language tags can be used to configure localization.
215
+
216
+ * `en` - en
217
+ * `de` - de
218
+
219
+ are_syncs_disabled : typing.Optional[bool]
220
+ The boolean that indicates whether initial, periodic, and force syncs will be disabled.
221
+
222
+ integration_specific_config : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
223
+ A JSON object containing integration-specific configuration options.
224
+
225
+ request_options : typing.Optional[RequestOptions]
226
+ Request-specific configuration.
227
+
228
+ Returns
229
+ -------
230
+ LinkToken
231
+
232
+
233
+ Examples
234
+ --------
235
+ import asyncio
236
+
237
+ from merge import AsyncMerge
238
+ from merge.resources.knowledgebase import CategoriesEnum
239
+
240
+ client = AsyncMerge(
241
+ account_token="YOUR_ACCOUNT_TOKEN",
242
+ api_key="YOUR_API_KEY",
243
+ )
244
+
245
+
246
+ async def main() -> None:
247
+ await client.knowledgebase.link_token.create(
248
+ end_user_email_address="example@gmail.com",
249
+ end_user_organization_name="Test Organization",
250
+ end_user_origin_id="12345",
251
+ categories=[CategoriesEnum.HRIS, CategoriesEnum.ATS],
252
+ )
253
+
254
+
255
+ asyncio.run(main())
256
+ """
257
+ _response = await self._raw_client.create(
258
+ end_user_email_address=end_user_email_address,
259
+ end_user_organization_name=end_user_organization_name,
260
+ end_user_origin_id=end_user_origin_id,
261
+ categories=categories,
262
+ integration=integration,
263
+ link_expiry_mins=link_expiry_mins,
264
+ should_create_magic_link_url=should_create_magic_link_url,
265
+ hide_admin_magic_link=hide_admin_magic_link,
266
+ common_models=common_models,
267
+ category_common_model_scopes=category_common_model_scopes,
268
+ language=language,
269
+ are_syncs_disabled=are_syncs_disabled,
270
+ integration_specific_config=integration_specific_config,
271
+ request_options=request_options,
272
+ )
273
+ return _response.data