revdoku 2.1.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 (172) hide show
  1. revdoku/REFERENCE.md +645 -0
  2. revdoku/__init__.py +362 -0
  3. revdoku/api/__init__.py +5 -0
  4. revdoku/api/default_api.py +16746 -0
  5. revdoku/api_client.py +833 -0
  6. revdoku/api_response.py +21 -0
  7. revdoku/client.py +303 -0
  8. revdoku/configuration.py +644 -0
  9. revdoku/exceptions.py +218 -0
  10. revdoku/models/__init__.py +171 -0
  11. revdoku/models/account_identity.py +156 -0
  12. revdoku/models/account_identity_agency_account.py +103 -0
  13. revdoku/models/account_identity_permissions.py +125 -0
  14. revdoku/models/account_limits.py +222 -0
  15. revdoku/models/account_list.py +121 -0
  16. revdoku/models/action_request.py +109 -0
  17. revdoku/models/add_upload_session_files_request.py +118 -0
  18. revdoku/models/agent_connection.py +146 -0
  19. revdoku/models/api_error.py +107 -0
  20. revdoku/models/api_error_error.py +124 -0
  21. revdoku/models/append_text200_response.py +107 -0
  22. revdoku/models/append_text_request.py +117 -0
  23. revdoku/models/append_text_result.py +120 -0
  24. revdoku/models/browser_link.py +109 -0
  25. revdoku/models/change_mailbox_address_request.py +119 -0
  26. revdoku/models/check_email_domain200_response.py +107 -0
  27. revdoku/models/code_requested.py +109 -0
  28. revdoku/models/connection.py +211 -0
  29. revdoku/models/connection_permissions.py +105 -0
  30. revdoku/models/connection_renewal.py +105 -0
  31. revdoku/models/create_browser_link201_response.py +107 -0
  32. revdoku/models/create_browser_link_request.py +111 -0
  33. revdoku/models/create_client_account201_response.py +107 -0
  34. revdoku/models/create_client_account201_response_data.py +105 -0
  35. revdoku/models/create_client_account_request.py +113 -0
  36. revdoku/models/create_email_alias_request.py +113 -0
  37. revdoku/models/create_email_domain201_response.py +107 -0
  38. revdoku/models/create_email_domain201_response_data.py +105 -0
  39. revdoku/models/create_email_domain_request.py +111 -0
  40. revdoku/models/create_mailbox201_response.py +107 -0
  41. revdoku/models/create_mailbox201_response_data.py +105 -0
  42. revdoku/models/create_mailbox_request.py +115 -0
  43. revdoku/models/create_upload_session201_response.py +107 -0
  44. revdoku/models/create_upload_session_request.py +136 -0
  45. revdoku/models/decoded_email_address.py +108 -0
  46. revdoku/models/decoded_incoming_message.py +279 -0
  47. revdoku/models/decoded_incoming_message_attachments_inner.py +120 -0
  48. revdoku/models/delete_email_domain200_response.py +107 -0
  49. revdoku/models/delete_email_domain_request.py +113 -0
  50. revdoku/models/delete_mailbox_request.py +111 -0
  51. revdoku/models/delete_result.py +103 -0
  52. revdoku/models/dns_record.py +111 -0
  53. revdoku/models/download.py +122 -0
  54. revdoku/models/email_alias.py +105 -0
  55. revdoku/models/email_attachment.py +134 -0
  56. revdoku/models/email_delivery.py +110 -0
  57. revdoku/models/email_detail.py +278 -0
  58. revdoku/models/email_domain.py +197 -0
  59. revdoku/models/email_domain_assigned_mailboxes_inner.py +107 -0
  60. revdoku/models/email_domain_assigned_mailboxes_inner_email.py +101 -0
  61. revdoku/models/email_domain_check.py +112 -0
  62. revdoku/models/email_domain_error.py +105 -0
  63. revdoku/models/email_domain_list.py +118 -0
  64. revdoku/models/email_forwarding.py +129 -0
  65. revdoku/models/email_forwarding_content.py +143 -0
  66. revdoku/models/email_label.py +120 -0
  67. revdoku/models/email_list.py +114 -0
  68. revdoku/models/email_received_event.py +119 -0
  69. revdoku/models/email_received_event_data.py +111 -0
  70. revdoku/models/email_sender_allowlist.py +110 -0
  71. revdoku/models/email_subscription.py +125 -0
  72. revdoku/models/email_summary.py +265 -0
  73. revdoku/models/email_summary_files.py +117 -0
  74. revdoku/models/error_code.py +178 -0
  75. revdoku/models/exchange_connection_grant_request.py +113 -0
  76. revdoku/models/file_actor.py +105 -0
  77. revdoku/models/file_download.py +113 -0
  78. revdoku/models/file_key.py +105 -0
  79. revdoku/models/file_list.py +114 -0
  80. revdoku/models/file_upload_skip.py +111 -0
  81. revdoku/models/file_version.py +180 -0
  82. revdoku/models/file_version_list.py +114 -0
  83. revdoku/models/file_version_reason.py +110 -0
  84. revdoku/models/finalize_upload_session_request.py +111 -0
  85. revdoku/models/get_account_limits200_response.py +107 -0
  86. revdoku/models/get_account_limits200_response_data.py +113 -0
  87. revdoku/models/get_account_limits200_response_data_usage.py +105 -0
  88. revdoku/models/get_account_limits200_response_data_usage_mailbox_creations.py +118 -0
  89. revdoku/models/get_email200_response.py +107 -0
  90. revdoku/models/get_email200_response_data.py +105 -0
  91. revdoku/models/get_email_original_download200_response.py +107 -0
  92. revdoku/models/get_email_original_download200_response_data.py +105 -0
  93. revdoku/models/get_email_subscription200_response.py +107 -0
  94. revdoku/models/get_email_subscription200_response_data.py +105 -0
  95. revdoku/models/get_email_webhook200_response.py +107 -0
  96. revdoku/models/get_email_webhook200_response_data.py +110 -0
  97. revdoku/models/get_file_by_path200_response.py +107 -0
  98. revdoku/models/get_file_by_path200_response_data.py +105 -0
  99. revdoku/models/get_file_download200_response.py +107 -0
  100. revdoku/models/get_mailbox_email_settings200_response.py +107 -0
  101. revdoku/models/get_status200_response.py +107 -0
  102. revdoku/models/list_accounts200_response.py +107 -0
  103. revdoku/models/list_email_domains200_response.py +107 -0
  104. revdoku/models/list_emails200_response.py +107 -0
  105. revdoku/models/list_file_versions200_response.py +107 -0
  106. revdoku/models/list_files200_response.py +107 -0
  107. revdoku/models/list_mailboxes200_response.py +107 -0
  108. revdoku/models/mailbox.py +196 -0
  109. revdoku/models/mailbox_action.py +107 -0
  110. revdoku/models/mailbox_counts.py +106 -0
  111. revdoku/models/mailbox_create.py +99 -0
  112. revdoku/models/mailbox_email.py +132 -0
  113. revdoku/models/mailbox_email_options.py +91 -0
  114. revdoku/models/mailbox_email_settings.py +175 -0
  115. revdoku/models/mailbox_email_settings_assignment.py +121 -0
  116. revdoku/models/mailbox_email_settings_assignment_error.py +105 -0
  117. revdoku/models/mailbox_email_settings_available_domains_inner.py +113 -0
  118. revdoku/models/mailbox_email_settings_customization.py +115 -0
  119. revdoku/models/mailbox_file.py +197 -0
  120. revdoku/models/mailbox_list.py +120 -0
  121. revdoku/models/mailbox_lock.py +122 -0
  122. revdoku/models/mailbox_update.py +98 -0
  123. revdoku/models/move_file_request.py +115 -0
  124. revdoku/models/pagination.py +111 -0
  125. revdoku/models/path_operation_result.py +135 -0
  126. revdoku/models/prepare_file_upload201_response.py +107 -0
  127. revdoku/models/prepare_file_upload_request.py +131 -0
  128. revdoku/models/prepared_file_upload.py +135 -0
  129. revdoku/models/rename_file200_response.py +107 -0
  130. revdoku/models/rename_file_request.py +111 -0
  131. revdoku/models/request_sign_in_code200_response.py +107 -0
  132. revdoku/models/request_sign_in_code_request.py +111 -0
  133. revdoku/models/restore_file_version201_response.py +107 -0
  134. revdoku/models/restored_file_version.py +116 -0
  135. revdoku/models/save_upload_session_batch_request.py +111 -0
  136. revdoku/models/save_uploaded_file201_response.py +107 -0
  137. revdoku/models/save_uploaded_file_request.py +141 -0
  138. revdoku/models/saved_file.py +121 -0
  139. revdoku/models/send_email202_response.py +107 -0
  140. revdoku/models/send_email202_response_data.py +105 -0
  141. revdoku/models/send_email_request.py +133 -0
  142. revdoku/models/set_email_webhook200_response.py +107 -0
  143. revdoku/models/set_email_webhook200_response_data.py +105 -0
  144. revdoku/models/set_email_webhook_request.py +113 -0
  145. revdoku/models/status.py +136 -0
  146. revdoku/models/status_features.py +101 -0
  147. revdoku/models/status_user.py +105 -0
  148. revdoku/models/storage_upload.py +103 -0
  149. revdoku/models/update_email_allowlist200_response.py +107 -0
  150. revdoku/models/update_email_allowlist200_response_data.py +105 -0
  151. revdoku/models/update_email_allowlist_request.py +117 -0
  152. revdoku/models/update_email_allowlist_request_sender_allowlist.py +104 -0
  153. revdoku/models/update_email_request.py +111 -0
  154. revdoku/models/update_mailbox_request.py +117 -0
  155. revdoku/models/upload_blob.py +119 -0
  156. revdoku/models/upload_session.py +170 -0
  157. revdoku/models/upload_session_file.py +110 -0
  158. revdoku/models/upload_session_result.py +151 -0
  159. revdoku/models/upload_session_upload.py +113 -0
  160. revdoku/models/uploaded_file.py +117 -0
  161. revdoku/models/verify_email_domain_request.py +109 -0
  162. revdoku/models/verify_sign_in_code201_response.py +107 -0
  163. revdoku/models/verify_sign_in_code_request.py +154 -0
  164. revdoku/models/webhook.py +110 -0
  165. revdoku/models/webhook_with_secret.py +112 -0
  166. revdoku/py.typed +0 -0
  167. revdoku/rest.py +334 -0
  168. revdoku-2.1.0.dist-info/METADATA +288 -0
  169. revdoku-2.1.0.dist-info/RECORD +172 -0
  170. revdoku-2.1.0.dist-info/WHEEL +5 -0
  171. revdoku-2.1.0.dist-info/licenses/LICENSE +21 -0
  172. revdoku-2.1.0.dist-info/top_level.txt +1 -0
revdoku/REFERENCE.md ADDED
@@ -0,0 +1,645 @@
1
+ # Revdoku API reference for Python
2
+
3
+ Generated from the Revdoku OpenAPI. Web version with examples: https://revdoku.com/api/reference.md
4
+
5
+ ```sh
6
+ pip install revdoku
7
+ ```
8
+
9
+ Python 3.10 or later.
10
+
11
+ ```python
12
+ from revdoku import Revdoku, RevdokuError
13
+
14
+ client = Revdoku() # reads REVDOKU_API_KEY
15
+ response = client.list_mailboxes()
16
+ print(response.data.mailboxes)
17
+ ```
18
+
19
+ - Every call returns the API envelope. Read results from `.data`.
20
+ - Field names are the JSON names in snake_case.
21
+ - API error responses raise `RevdokuError` with `status`, `code`, `message`, `details`, `request_id` and `retry_after` (seconds). Network, timeout and TLS failures raise urllib3 exceptions, such as `urllib3.exceptions.SSLError`.
22
+ - Options: `Revdoku(api_key=None, account_id=None, base_url=None, timeout=30.0)`. `base_url` is the origin without `/v1`.
23
+ - `client.api` has every operation below. Mutations are never retried automatically.
24
+
25
+ ## Helpers
26
+
27
+ - `client.list_mailboxes(**filters)`: List mailboxes.
28
+ - `client.get_mailbox(mailbox_id, **options)`: Read a mailbox.
29
+ - `client.create_mailbox(username=None, domain=None, title=None, account_id=None, *, description=None, metadata=None, **options)`: Create a mailbox. Never retry automatically after an uncertain result.
30
+ - `client.list_emails(mailbox_id, **filters)`: List emails. Poll with the saved pagination.next_cursor.
31
+ - `client.get_email(mailbox_id, email_id, **options)`: Read an email.
32
+ - `client.list_files(mailbox_id, **filters)`: List files.
33
+ - `client.get_attachment_download(mailbox_id, email_id, attachment_id, **options)`: Get a temporary download link for an attachment.
34
+ - `client.download_attachment(mailbox_id, email_id, attachment_id, max_bytes=64 * 1024 * 1024, **options)`: Download attachment bytes.
35
+ - `client.upload_file(mailbox_id, path, content, content_type=None, account_id=None, expected_mailbox_version=None, **options)`: Upload bytes or text and save a file version. `_request_timeout` also limits the storage transfer.
36
+
37
+ ## Authentication
38
+
39
+ Operations that need no API key run before you have one. They use the generated `DefaultApi` class instead of `Revdoku`, so their errors are `ApiException`, not `RevdokuError`.
40
+
41
+ ### Email a sign-in code
42
+
43
+ `POST /v1/agent_auth/request_code` · [web reference](https://revdoku.com/api/reference/authentication.md#email-a-sign-in-code)
44
+
45
+ `DefaultApi().request_sign_in_code(request_sign_in_code_request)`
46
+
47
+ Needs no API key. Sends a six-digit code to an existing account email. The response is the same for every address, so it never reveals whether an account exists. Create new accounts in the browser at https://app.revdoku.com/users/sign_up.
48
+
49
+ Body `request_sign_in_code_request` (`RequestSignInCodeRequest`): `email` (string (email), required), `account_id` (string), `reason` (string or null).
50
+
51
+ ### Exchange a sign-in code for an API key
52
+
53
+ `POST /v1/agent_auth/verify_code` · [web reference](https://revdoku.com/api/reference/authentication.md#exchange-a-sign-in-code-for-an-api-key)
54
+
55
+ `DefaultApi().verify_sign_in_code(verify_sign_in_code_request)`
56
+
57
+ Needs no API key. Creates an AI agent connection for an account owner or administrator. Accounts with two-factor authentication must use browser sign-in.
58
+
59
+ Body `verify_sign_in_code_request` (`VerifySignInCodeRequest`): `email` (string (email), required), `code` (string, required), `label` (string), `permission_scope` (string: `mailbox_read`, `mailbox_write`, `mailbox_admin`), `mailbox_access` (string: `all`, `selected`), `mailbox_ids` (array of string), `mailbox_permissions` (object), `account_id` (string), `reason` (string or null).
60
+
61
+ ### Exchange a one-time dashboard connection code for an API key
62
+
63
+ `POST /v1/agent_auth/exchange_grant` · [web reference](https://revdoku.com/api/reference/authentication.md#exchange-a-one-time-dashboard-connection-code-for-an-api-key)
64
+
65
+ `DefaultApi().exchange_connection_grant(exchange_connection_grant_request)`
66
+
67
+ Needs no API key. The dashboard creates the one-time code when a signed-in administrator copies a connection prompt.
68
+
69
+ Body `exchange_connection_grant_request` (`ExchangeConnectionGrantRequest`): `grant_token` (string, required), `label` (string), `account_id` (string), `reason` (string or null).
70
+
71
+ ### Create a dashboard link for the user
72
+
73
+ `POST /v1/agent_auth/browser_login_link` · [web reference](https://revdoku.com/api/reference/authentication.md#create-a-dashboard-link-for-the-user)
74
+
75
+ `client.api.create_browser_link(create_browser_link_request)`
76
+
77
+ Returns a dashboard URL for a path such as /mailboxes. The user signs in normally; the link grants no access.
78
+
79
+ Body `create_browser_link_request` (`CreateBrowserLinkRequest`): `redirect_path` (string), `account_id` (string), `reason` (string or null).
80
+
81
+ ## Accounts
82
+
83
+ ### Read the connection and selected account
84
+
85
+ `GET /v1/status` · [web reference](https://revdoku.com/api/reference/accounts.md#read-the-connection-and-selected-account)
86
+
87
+ `client.api.get_status()`
88
+
89
+ Works with every API key, including mailbox-scoped keys. Read quotas with GET /v1/account/limits.
90
+
91
+ Parameters: `account_id` (string), `reason` (string or null).
92
+
93
+ ### List accounts granted to this credential
94
+
95
+ `GET /v1/accounts` · [web reference](https://revdoku.com/api/reference/accounts.md#list-accounts-granted-to-this-credential)
96
+
97
+ `client.api.list_accounts()`
98
+
99
+ Works with every API key. Lists the account of this credential and the client accounts that an agency owner granted to it. Send an id from this list as account_id to act in that account.
100
+
101
+ Parameters: `limit` (integer), `cursor` (string).
102
+
103
+ ### Create a client account
104
+
105
+ `POST /v1/accounts` · [web reference](https://revdoku.com/api/reference/accounts.md#create-a-client-account)
106
+
107
+ `client.api.create_client_account(create_client_account_request)`
108
+
109
+ Requires an agency owner credential with client-account access. The credential default does not change; send the new account_id on later requests.
110
+
111
+ Body `create_client_account_request` (`CreateClientAccountRequest`): `name` (string, required), `client_name` (string), `account_id` (string), `reason` (string or null).
112
+
113
+ ### Read one granted account
114
+
115
+ `GET /v1/accounts/{account_id}` · [web reference](https://revdoku.com/api/reference/accounts.md#read-one-granted-account)
116
+
117
+ `client.api.get_account(account_id)`
118
+
119
+ Works with every API key. Returns the name, kind, region and status of one account that this credential can use, and the permissions of the credential in it. Other account IDs return 403.
120
+
121
+ Parameters: `account_id` (string, required).
122
+
123
+ ### Read effective account limits
124
+
125
+ `GET /v1/account/limits` · [web reference](https://revdoku.com/api/reference/accounts.md#read-effective-account-limits)
126
+
127
+ `client.api.get_account_limits()`
128
+
129
+ Values come from the plan and account overrides. Zero means no allowance; null means no cap. Storage, mailbox and email traffic allowances are shared within a billing group.
130
+
131
+ Parameters: `account_id` (string).
132
+
133
+ ## Mailboxes
134
+
135
+ ### List mailboxes
136
+
137
+ `GET /v1/mailboxes` · [web reference](https://revdoku.com/api/reference/mailboxes.md#list-mailboxes)
138
+
139
+ `client.list_mailboxes()`. Full API: `client.api.list_mailboxes()`.
140
+
141
+ Lists active mailboxes by default, newest first. Counts and pages cover only mailboxes this credential can access. Reads no email content.
142
+
143
+ Parameters: `account_id` (string), `reason` (string or null), `status` (string: `active`, `archived`, `all`), `q` (string), `limit` (integer), `cursor` (string).
144
+
145
+ ### Create a mailbox
146
+
147
+ `POST /v1/mailboxes` · [web reference](https://revdoku.com/api/reference/mailboxes.md#create-a-mailbox)
148
+
149
+ `client.create_mailbox(username=..., domain=..., title=...)`. Full API: `client.api.create_mailbox(create_mailbox_request)`.
150
+
151
+ Waits until the address can receive email. On revdokumail.com, email.username is a prefix with a permanent 4-character random suffix on every plan; a custom domain takes the exact name. If confirmation does not finish, EMAIL_NOT_READY returns the created mailbox_id in error.details: read that mailbox instead of creating another. The title defaults to email.username; a title that another active mailbox uses returns 409 MAILBOX_TITLE_TAKEN. Never retry a creation automatically.
152
+
153
+ Body `create_mailbox_request` (`CreateMailboxRequest`): `mailbox` (MailboxCreate), `account_id` (string), `reason` (string or null).
154
+
155
+ ### Read a mailbox
156
+
157
+ `GET /v1/mailboxes/{mailbox_id}` · [web reference](https://revdoku.com/api/reference/mailboxes.md#read-a-mailbox)
158
+
159
+ `client.get_mailbox(mailbox_id)`. Full API: `client.api.get_mailbox(mailbox_id)`.
160
+
161
+ Reading never changes the mailbox. Read address settings, emails and files through their own endpoints.
162
+
163
+ Parameters: `mailbox_id` (string, required), `account_id` (string), `reason` (string or null).
164
+
165
+ ### Update a mailbox title, description or metadata
166
+
167
+ `PATCH /v1/mailboxes/{mailbox_id}` · [web reference](https://revdoku.com/api/reference/mailboxes.md#update-a-mailbox-title-description-or-metadata)
168
+
169
+ `client.api.update_mailbox(mailbox_id, update_mailbox_request)`
170
+
171
+ metadata must be a JSON object. It replaces the stored object; {} clears it. Send expected_metadata_version from your last read; a stale value changes nothing and returns MAILBOX_METADATA_CONFLICT. Titles are unique among active mailboxes; a used title returns 409 MAILBOX_TITLE_TAKEN.
172
+
173
+ Parameters: `mailbox_id` (string, required).
174
+
175
+ Body `update_mailbox_request` (`UpdateMailboxRequest`): `mailbox` (MailboxUpdate, required), `expected_metadata_version` (string), `account_id` (string), `reason` (string or null).
176
+
177
+ ### Permanently delete an archived mailbox
178
+
179
+ `DELETE /v1/mailboxes/{mailbox_id}` · [web reference](https://revdoku.com/api/reference/mailboxes.md#permanently-delete-an-archived-mailbox)
180
+
181
+ `client.api.delete_mailbox(mailbox_id, delete_mailbox_request)`
182
+
183
+ Archive the mailbox first. Send delete.confirmation from the mailbox read after the user confirms. Large mailboxes finish deleting in the background.
184
+
185
+ Parameters: `mailbox_id` (string, required).
186
+
187
+ Body `delete_mailbox_request` (`DeleteMailboxRequest`): `confirmation` (string, required), `account_id` (string), `reason` (string or null).
188
+
189
+ ### Archive a mailbox
190
+
191
+ `POST /v1/mailboxes/{mailbox_id}/archive` · [web reference](https://revdoku.com/api/reference/mailboxes.md#archive-a-mailbox)
192
+
193
+ `client.api.archive_mailbox(mailbox_id, action_request)`
194
+
195
+ Archived mailboxes keep their files and emails and become read-only.
196
+
197
+ Parameters: `mailbox_id` (string, required).
198
+
199
+ Body `action_request` (`ActionRequest`): `account_id` (string), `reason` (string or null).
200
+
201
+ ### Unarchive a mailbox
202
+
203
+ `POST /v1/mailboxes/{mailbox_id}/unarchive` · [web reference](https://revdoku.com/api/reference/mailboxes.md#unarchive-a-mailbox)
204
+
205
+ `client.api.unarchive_mailbox(mailbox_id, action_request)`
206
+
207
+ Requires mailbox-admin permission. The mailbox becomes writable again. If another active mailbox has the same title, the title gets a number suffix. A mailbox that is not archived returns MAILBOX_NOT_ARCHIVED.
208
+
209
+ Parameters: `mailbox_id` (string, required).
210
+
211
+ Body `action_request` (`ActionRequest`): `account_id` (string), `reason` (string or null).
212
+
213
+ ## Email settings
214
+
215
+ ### Read address settings
216
+
217
+ `GET /v1/mailboxes/{mailbox_id}/email` · [web reference](https://revdoku.com/api/reference/email-settings.md#read-address-settings)
218
+
219
+ `client.api.get_mailbox_email_settings(mailbox_id)`
220
+
221
+ Requires mailbox write permission.
222
+
223
+ Parameters: `mailbox_id` (string, required), `account_id` (string), `reason` (string or null).
224
+
225
+ ### Change the primary address
226
+
227
+ `POST /v1/mailboxes/{mailbox_id}/email/rotate` · [web reference](https://revdoku.com/api/reference/email-settings.md#change-the-primary-address)
228
+
229
+ `client.api.change_mailbox_address(mailbox_id, change_mailbox_address_request)`
230
+
231
+ Requires a paid plan and mailbox admin permission. Send the current address as expected_address. Omit username for a generated name. A custom-domain change returns 202; read the settings until assignment.status is active or failed. For account owners and administrators the old address becomes an alias unless keep_old_as_alias is false. Without a free alias slot the request returns EMAIL_ALIAS_LIMIT; send false to retire the old address.
232
+
233
+ Parameters: `mailbox_id` (string, required).
234
+
235
+ Body `change_mailbox_address_request` (`ChangeMailboxAddressRequest`): `confirm` (boolean `true`, required), `expected_address` (string, required), `username` (string), `domain` (string), `keep_old_as_alias` (boolean), `account_id` (string), `reason` (string or null).
236
+
237
+ ### Add an alias address
238
+
239
+ `POST /v1/mailboxes/{mailbox_id}/email/aliases` · [web reference](https://revdoku.com/api/reference/email-settings.md#add-an-alias-address)
240
+
241
+ `client.api.create_email_alias(mailbox_id, create_email_alias_request)`
242
+
243
+ Requires a paid plan and a full-account owner or administrator with mailbox-admin permission. The primary address stays unchanged.
244
+
245
+ Parameters: `mailbox_id` (string, required).
246
+
247
+ Body `create_email_alias_request` (`CreateEmailAliasRequest`): `username` (string, required), `domain` (string), `account_id` (string), `reason` (string or null).
248
+
249
+ ### Remove an alias address
250
+
251
+ `DELETE /v1/mailboxes/{mailbox_id}/email/aliases/{alias_id}` · [web reference](https://revdoku.com/api/reference/email-settings.md#remove-an-alias-address)
252
+
253
+ `client.api.delete_email_alias(mailbox_id, alias_id)`
254
+
255
+ Stops new and queued deliveries to the alias. Saved emails stay.
256
+
257
+ Parameters: `mailbox_id` (string, required), `alias_id` (string, required), `account_id` (string), `reason` (string or null).
258
+
259
+ ### Replace the allowed senders
260
+
261
+ `PATCH /v1/mailboxes/{mailbox_id}/email/allowlist` · [web reference](https://revdoku.com/api/reference/email-settings.md#replace-the-allowed-senders)
262
+
263
+ `client.api.update_email_allowlist(mailbox_id, update_email_allowlist_request)`
264
+
265
+ Requires an account owner or administrator with mailbox-admin permission. Send sender_allowlist.version from the settings read as expected_version.
266
+
267
+ Parameters: `mailbox_id` (string, required).
268
+
269
+ Body `update_email_allowlist_request` (`UpdateEmailAllowlistRequest`): `sender_allowlist` (object, required), `expected_version` (string, required), `account_id` (string), `reason` (string or null).
270
+
271
+ ### Read the email webhook
272
+
273
+ `GET /v1/mailboxes/{mailbox_id}/email/webhook` · [web reference](https://revdoku.com/api/reference/email-settings.md#read-the-email-webhook)
274
+
275
+ `client.api.get_email_webhook(mailbox_id)`
276
+
277
+ Requires mailbox-admin permission. webhook is null when no webhook is set. The signing secret is never returned here.
278
+
279
+ Parameters: `mailbox_id` (string, required), `account_id` (string).
280
+
281
+ ### Set the email webhook
282
+
283
+ `PUT /v1/mailboxes/{mailbox_id}/email/webhook` · [web reference](https://revdoku.com/api/reference/email-settings.md#set-the-email-webhook)
284
+
285
+ `client.api.set_email_webhook(mailbox_id, set_email_webhook_request)`
286
+
287
+ Requires mailbox-admin permission and a public HTTPS URL. A new URL or rotate_secret=true creates a new signing secret, returns it once and cancels pending deliveries. The same URL without rotate_secret returns the webhook without a secret.
288
+
289
+ Parameters: `mailbox_id` (string, required).
290
+
291
+ Body `set_email_webhook_request` (`SetEmailWebhookRequest`): `webhook_url` (string (uri), required), `rotate_secret` (boolean), `account_id` (string), `reason` (string or null).
292
+
293
+ ### Remove the email webhook
294
+
295
+ `DELETE /v1/mailboxes/{mailbox_id}/email/webhook` · [web reference](https://revdoku.com/api/reference/email-settings.md#remove-the-email-webhook)
296
+
297
+ `client.api.delete_email_webhook(mailbox_id)`
298
+
299
+ Cancels queued deliveries. A delivery already in progress can finish. Returns the mailbox ID, also when no webhook is set.
300
+
301
+ Parameters: `mailbox_id` (string, required), `account_id` (string).
302
+
303
+ ### Get a live email subscription ticket
304
+
305
+ `GET /v1/mailboxes/{mailbox_id}/email/subscription` · [web reference](https://revdoku.com/api/reference/email-settings.md#get-a-live-email-subscription-ticket)
306
+
307
+ `client.api.get_email_subscription(mailbox_id)`
308
+
309
+ Requires mailbox read permission. Connect to websocket_url with email_subscription_token=TOKEN within 60 seconds, then subscribe to EmailReceivedChannel. Catch up with the email list cursor after every connect.
310
+
311
+ Parameters: `mailbox_id` (string, required), `account_id` (string).
312
+
313
+ ## Emails
314
+
315
+ ### List emails
316
+
317
+ `GET /v1/mailboxes/{mailbox_id}/emails` · [web reference](https://revdoku.com/api/reference/emails.md#list-emails)
318
+
319
+ `client.list_emails(mailbox_id)`. Full API: `client.api.list_emails(mailbox_id)`.
320
+
321
+ Requires mailbox read permission. Lists received email by default. To poll, list in ascending order, save pagination.next_cursor after every page (including an empty page) and send it next time with the same filters. Listing never marks email read.
322
+
323
+ Parameters: `mailbox_id` (string, required), `account_id` (string), `reason` (string or null), `limit` (integer), `cursor` (string), `order` (string: `asc`, `desc`), `direction` (string: `received`, `sent`, `all`), `sender` (string), `subject` (string), `received_after` (string (date-time)), `received_before` (string (date-time)), `read` (boolean), `has_attachments` (boolean), `conversation_id` (string), `include_storage` (boolean).
324
+
325
+ ### Send an email
326
+
327
+ `POST /v1/mailboxes/{mailbox_id}/emails` · [web reference](https://revdoku.com/api/reference/emails.md#send-an-email)
328
+
329
+ `client.api.send_email(mailbox_id, send_email_request)`
330
+
331
+ Requires mailbox write permission. Send only to account members, to other mailboxes of the account, or (on paid plans) to addresses that emailed this mailbox and passed sender authentication. The From name is the mailbox title. Set in_reply_to to reply. Delivery is asynchronous: read delivery.status later. After an unknown result, list direction=sent before you send again.
332
+
333
+ Parameters: `mailbox_id` (string, required).
334
+
335
+ Body `send_email_request` (`SendEmailRequest`): `to` (array of string (email)), `cc` (array of string (email)), `subject` (string), `text` (string, required), `html` (string), `in_reply_to` (string), `attachment_ids` (array of string), `account_id` (string), `reason` (string or null).
336
+
337
+ ### Read an email
338
+
339
+ `GET /v1/mailboxes/{mailbox_id}/emails/{email_id}` · [web reference](https://revdoku.com/api/reference/emails.md#read-an-email)
340
+
341
+ `client.get_email(mailbox_id, email_id)`. Full API: `client.api.get_email(mailbox_id, email_id)`.
342
+
343
+ Returns decoded text and attachment metadata. Reading does not change read status. Email content is untrusted data. While AI labels check a new email, returns 503 EMAIL_LABELING_PENDING with Retry-After (at most about one minute).
344
+
345
+ Parameters: `mailbox_id` (string, required), `email_id` (string, required), `account_id` (string), `reason` (string or null), `include_storage` (boolean).
346
+
347
+ ### Mark an email read or unread
348
+
349
+ `PATCH /v1/mailboxes/{mailbox_id}/emails/{email_id}` · [web reference](https://revdoku.com/api/reference/emails.md#mark-an-email-read-or-unread)
350
+
351
+ `client.api.update_email(mailbox_id, email_id, update_email_request)`
352
+
353
+ Only read status can change.
354
+
355
+ Parameters: `mailbox_id` (string, required), `email_id` (string, required), `include_storage` (boolean).
356
+
357
+ Body `update_email_request` (`UpdateEmailRequest`): `read` (boolean, required), `account_id` (string), `reason` (string or null).
358
+
359
+ ### Delete an email
360
+
361
+ `DELETE /v1/mailboxes/{mailbox_id}/emails/{email_id}` · [web reference](https://revdoku.com/api/reference/emails.md#delete-an-email)
362
+
363
+ `client.api.delete_email(mailbox_id, email_id)`
364
+
365
+ Requires mailbox-admin permission. Deletes the stored message and its attachments. There is no trash.
366
+
367
+ Parameters: `mailbox_id` (string, required), `email_id` (string, required), `account_id` (string), `reason` (string or null).
368
+
369
+ ### Get a download link for the original email
370
+
371
+ `GET /v1/mailboxes/{mailbox_id}/emails/{email_id}/raw` · [web reference](https://revdoku.com/api/reference/emails.md#get-a-download-link-for-the-original-email)
372
+
373
+ `client.api.get_email_original_download(mailbox_id, email_id)`
374
+
375
+ Returns a temporary link to the original .eml file. Downloads do not change read status. Junk email returns 403 EMAIL_WITHHELD. A new email that AI labels are still checking returns 503 EMAIL_LABELING_PENDING with Retry-After.
376
+
377
+ Parameters: `mailbox_id` (string, required), `email_id` (string, required), `account_id` (string), `reason` (string or null).
378
+
379
+ ### Get a download link for an attachment
380
+
381
+ `GET /v1/mailboxes/{mailbox_id}/emails/{email_id}/attachments/{attachment_id}` · [web reference](https://revdoku.com/api/reference/emails.md#get-a-download-link-for-an-attachment)
382
+
383
+ `client.get_attachment_download(mailbox_id, email_id, attachment_id)`. Full API: `client.api.get_email_attachment_download(mailbox_id, email_id, attachment_id)`.
384
+
385
+ Returns a temporary link. No extraction or analysis is done. Junk email returns 403 EMAIL_WITHHELD. A new email that AI labels are still checking returns 503 EMAIL_LABELING_PENDING with Retry-After.
386
+
387
+ Parameters: `mailbox_id` (string, required), `email_id` (string, required), `attachment_id` (string, required), `account_id` (string), `reason` (string or null).
388
+
389
+ ## Files
390
+
391
+ ### Prepare a file upload (step 1 of 3)
392
+
393
+ `POST /v1/direct_uploads` · [web reference](https://revdoku.com/api/reference/files.md#prepare-a-file-upload-step-1-of-3)
394
+
395
+ `client.upload_file(mailbox_id, path, content)` (runs all three upload steps). Full API: `client.api.prepare_file_upload(prepare_file_upload_request)`.
396
+
397
+ Returns a storage URL. Then PUT the bytes to direct_upload.url with exactly direct_upload.headers and no API key (step 2), and save the file with POST /v1/mailboxes/{mailbox_id}/files (step 3). Identical content at the same path returns skipped=true and duplicate=true without an upload.
398
+
399
+ Body `prepare_file_upload_request` (`PrepareFileUploadRequest`): `mailbox_id` (string, required), `path` (string, required), `existing_file_policy` (string: `replace`, `skip`), `blob` (UploadBlob, required), `account_id` (string), `reason` (string or null).
400
+
401
+ ### List files
402
+
403
+ `GET /v1/mailboxes/{mailbox_id}/files` · [web reference](https://revdoku.com/api/reference/files.md#list-files)
404
+
405
+ `client.list_files(mailbox_id)`. Full API: `client.api.list_files(mailbox_id)`.
406
+
407
+ Lists current files, including stored emails under _email/. Listing never marks files read.
408
+
409
+ Parameters: `mailbox_id` (string, required), `account_id` (string), `reason` (string or null), `q` (string), `folder` (string), `limit` (integer), `cursor` (string).
410
+
411
+ ### Save an uploaded file (step 3 of 3)
412
+
413
+ `POST /v1/mailboxes/{mailbox_id}/files` · [web reference](https://revdoku.com/api/reference/files.md#save-an-uploaded-file-step-3-of-3)
414
+
415
+ `client.upload_file(mailbox_id, path, content)` (runs all three upload steps). Full API: `client.api.save_uploaded_file(mailbox_id, save_uploaded_file_request)`.
416
+
417
+ Saves the uploaded blob at path. An existing path gets a new version.
418
+
419
+ Parameters: `mailbox_id` (string, required).
420
+
421
+ Body `save_uploaded_file_request` (`SaveUploadedFileRequest`): `path` (string, required), `signed_blob_id` (string, required), `name` (string), `role` (string: `source`, `reference`, `generated`, `agent_output`, `export`, `artifact`), `existing_file_policy` (string: `replace`, `skip`), `expected_mailbox_version` (string), `account_id` (string), `reason` (string or null).
422
+
423
+ ### Find a file by path
424
+
425
+ `GET /v1/mailboxes/{mailbox_id}/files/by_path` · [web reference](https://revdoku.com/api/reference/files.md#find-a-file-by-path)
426
+
427
+ `client.api.get_file_by_path(mailbox_id, path)`
428
+
429
+ Returns file metadata only. Read content with the download endpoint. The disposition and content_url parameters return INVALID_ARGUMENT.
430
+
431
+ Parameters: `mailbox_id` (string, required), `path` (string, required), `account_id` (string), `reason` (string or null).
432
+
433
+ ### Append text to a file
434
+
435
+ `POST /v1/mailboxes/{mailbox_id}/files/append_text` · [web reference](https://revdoku.com/api/reference/files.md#append-text-to-a-file)
436
+
437
+ `client.api.append_text(mailbox_id, append_text_request)`
438
+
439
+ Appends UTF-8 text to an existing text file and creates a new version. A missing file returns MAILBOX_FILE_NOT_FOUND.
440
+
441
+ Parameters: `mailbox_id` (string, required).
442
+
443
+ Body `append_text_request` (`AppendTextRequest`): `path` (string, required), `content` (string, required), `newline_before` (boolean), `expected_mailbox_version` (string), `account_id` (string), `reason` (string or null).
444
+
445
+ ### Read file metadata
446
+
447
+ `GET /v1/mailboxes/{mailbox_id}/files/{file_id}` · [web reference](https://revdoku.com/api/reference/files.md#read-file-metadata)
448
+
449
+ `client.api.get_file(mailbox_id, file_id)`
450
+
451
+ Reading metadata never marks the file read.
452
+
453
+ Parameters: `mailbox_id` (string, required), `file_id` (string, required), `account_id` (string), `reason` (string or null).
454
+
455
+ ### Delete a file
456
+
457
+ `DELETE /v1/mailboxes/{mailbox_id}/files/{file_id}` · [web reference](https://revdoku.com/api/reference/files.md#delete-a-file)
458
+
459
+ `client.api.delete_file(mailbox_id, file_id)`
460
+
461
+ Requires mailbox-admin permission. Files under _email/ return EMAIL_PATH_READ_ONLY; delete the email instead.
462
+
463
+ Parameters: `mailbox_id` (string, required), `file_id` (string, required), `account_id` (string), `reason` (string or null).
464
+
465
+ ### Get a download link for a file
466
+
467
+ `GET /v1/mailboxes/{mailbox_id}/files/{file_id}/download` · [web reference](https://revdoku.com/api/reference/files.md#get-a-download-link-for-a-file)
468
+
469
+ `client.api.get_file_download(mailbox_id, file_id)`
470
+
471
+ Returns a temporary link and marks this version read. Send version_id for an older version.
472
+
473
+ Parameters: `mailbox_id` (string, required), `file_id` (string, required), `version_id` (string), `account_id` (string), `reason` (string or null).
474
+
475
+ ### Rename or move a file in the same mailbox
476
+
477
+ `POST /v1/mailboxes/{mailbox_id}/files/{file_id}/rename` · [web reference](https://revdoku.com/api/reference/files.md#rename-or-move-a-file-in-the-same-mailbox)
478
+
479
+ `client.api.rename_file(mailbox_id, file_id, rename_file_request)`
480
+
481
+ Changes the path without uploading the content again.
482
+
483
+ Parameters: `mailbox_id` (string, required), `file_id` (string, required).
484
+
485
+ Body `rename_file_request` (`RenameFileRequest`): `new_path` (string, required), `account_id` (string), `reason` (string or null).
486
+
487
+ ### Move a file
488
+
489
+ `POST /v1/mailboxes/{mailbox_id}/files/{file_id}/move` · [web reference](https://revdoku.com/api/reference/files.md#move-a-file)
490
+
491
+ `client.api.move_file(mailbox_id, file_id, move_file_request)`
492
+
493
+ Works in the same mailbox or into target_mailbox_id. Content is not uploaded again. Send target_path for an exact path or target_folder to keep the name.
494
+
495
+ Parameters: `mailbox_id` (string, required), `file_id` (string, required).
496
+
497
+ Body `move_file_request` (`MoveFileRequest`): `target_mailbox_id` (string), `target_path` (string), `target_folder` (string), `account_id` (string), `reason` (string or null).
498
+
499
+ ### Copy a file
500
+
501
+ `POST /v1/mailboxes/{mailbox_id}/files/{file_id}/copy` · [web reference](https://revdoku.com/api/reference/files.md#copy-a-file)
502
+
503
+ `client.api.copy_file(mailbox_id, file_id, move_file_request)`
504
+
505
+ Works in the same mailbox or into target_mailbox_id. Content is not uploaded again. Send target_path for an exact path or target_folder to keep the name.
506
+
507
+ Parameters: `mailbox_id` (string, required), `file_id` (string, required).
508
+
509
+ Body `move_file_request` (`MoveFileRequest`): `target_mailbox_id` (string), `target_path` (string), `target_folder` (string), `account_id` (string), `reason` (string or null).
510
+
511
+ ### List file versions
512
+
513
+ `GET /v1/mailboxes/{mailbox_id}/files/{file_id}/versions` · [web reference](https://revdoku.com/api/reference/files.md#list-file-versions)
514
+
515
+ `client.api.list_file_versions(mailbox_id, file_id)`
516
+
517
+ Newest first.
518
+
519
+ Parameters: `mailbox_id` (string, required), `file_id` (string, required), `account_id` (string), `reason` (string or null), `limit` (integer), `cursor` (string).
520
+
521
+ ### Restore a file version
522
+
523
+ `POST /v1/mailboxes/{mailbox_id}/files/{file_id}/versions/{version_id}/restore` · [web reference](https://revdoku.com/api/reference/files.md#restore-a-file-version)
524
+
525
+ `client.api.restore_file_version(mailbox_id, file_id, version_id, action_request)`
526
+
527
+ Creates a new current version with the content of the selected version. History is kept. Requires a plan with version restore.
528
+
529
+ Parameters: `mailbox_id` (string, required), `file_id` (string, required), `version_id` (string, required).
530
+
531
+ Body `action_request` (`ActionRequest`): `account_id` (string), `reason` (string or null).
532
+
533
+ ### Start a batch upload
534
+
535
+ `POST /v1/mailboxes/{mailbox_id}/upload_sessions` · [web reference](https://revdoku.com/api/reference/files.md#start-a-batch-upload)
536
+
537
+ `client.api.create_upload_session(mailbox_id, create_upload_session_request)`
538
+
539
+ Starts an upload session for many files and returns storage targets for the first files. The session locks the mailbox for other writers; incoming email still arrives. Send files in batches with POST .../uploads, PUT the bytes to each upload.url, save each batch with POST .../finalize_batch, then call POST .../finalize. Unsaved uploads are discarded when the session expires.
540
+
541
+ Parameters: `mailbox_id` (string, required).
542
+
543
+ Body `create_upload_session_request` (`CreateUploadSessionRequest`): `files` (array of UploadSessionFile), `expected_file_count` (integer), `client_session_key` (string), `existing_file_policy` (string: `replace`, `skip`), `expected_mailbox_version` (string), `account_id` (string), `reason` (string or null).
544
+
545
+ ### Get storage targets for a batch
546
+
547
+ `POST /v1/mailboxes/{mailbox_id}/upload_sessions/{session_id}/uploads` · [web reference](https://revdoku.com/api/reference/files.md#get-storage-targets-for-a-batch)
548
+
549
+ `client.api.add_upload_session_files(mailbox_id, session_id, add_upload_session_files_request)`
550
+
551
+ Returns upload.url and upload.headers for each file that needs bytes. Repeating a path returns a fresh target, for example after a failed PUT. Files with identical content are skipped.
552
+
553
+ Parameters: `mailbox_id` (string, required), `session_id` (string, required).
554
+
555
+ Body `add_upload_session_files_request` (`AddUploadSessionFilesRequest`): `files` (array of UploadSessionFile, required), `account_id` (string), `reason` (string or null).
556
+
557
+ ### Save uploaded files
558
+
559
+ `POST /v1/mailboxes/{mailbox_id}/upload_sessions/{session_id}/finalize_batch` · [web reference](https://revdoku.com/api/reference/files.md#save-uploaded-files)
560
+
561
+ `client.api.save_upload_session_batch(mailbox_id, session_id)`
562
+
563
+ Saves up to limit files whose bytes were uploaded. Call it after each batch to keep each request short. DIRECT_UPLOAD_NOT_FOUND names a file whose bytes are missing in error.details.path; upload it again and retry.
564
+
565
+ Parameters: `mailbox_id` (string, required), `session_id` (string, required).
566
+
567
+ Body `save_upload_session_batch_request` (`SaveUploadSessionBatchRequest`, optional): `limit` (integer), `account_id` (string), `reason` (string or null).
568
+
569
+ ### Finish or cancel a batch upload
570
+
571
+ `POST /v1/mailboxes/{mailbox_id}/upload_sessions/{session_id}/finalize` · [web reference](https://revdoku.com/api/reference/files.md#finish-or-cancel-a-batch-upload)
572
+
573
+ `client.api.finalize_upload_session(mailbox_id, session_id)`
574
+
575
+ complete=true saves the remaining uploaded files, creates one mailbox version and releases the lock. A 202 response with finalize_pending=true means more files remain: call finalize again after Retry-After. complete=false cancels the session and discards its unsaved files. Finalizing a finished session returns it unchanged.
576
+
577
+ Parameters: `mailbox_id` (string, required), `session_id` (string, required).
578
+
579
+ Body `finalize_upload_session_request` (`FinalizeUploadSessionRequest`, optional): `complete` (boolean), `account_id` (string), `reason` (string or null).
580
+
581
+ ## Email domains
582
+
583
+ ### List custom email domains
584
+
585
+ `GET /v1/account/email_domains` · [web reference](https://revdoku.com/api/reference/email-domains.md#list-custom-email-domains)
586
+
587
+ `client.api.list_email_domains()`
588
+
589
+ Requires a full-account owner or administrator credential.
590
+
591
+ Parameters: `account_id` (string), `limit` (integer), `cursor` (string).
592
+
593
+ ### Connect a custom email domain
594
+
595
+ `POST /v1/account/email_domains` · [web reference](https://revdoku.com/api/reference/email-domains.md#connect-a-custom-email-domain)
596
+
597
+ `client.api.create_email_domain(create_email_domain_request)`
598
+
599
+ Claims an exact hostname and returns the DNS records to publish. Never change DNS without the domain owner's authorization.
600
+
601
+ Body `create_email_domain_request` (`CreateEmailDomainRequest`): `hostname` (string, required), `account_id` (string), `reason` (string or null).
602
+
603
+ ### Check a hostname for conflicting DNS
604
+
605
+ `POST /v1/account/email_domains/check` · [web reference](https://revdoku.com/api/reference/email-domains.md#check-a-hostname-for-conflicting-dns)
606
+
607
+ `client.api.check_email_domain(create_email_domain_request)`
608
+
609
+ Makes no claim and changes no DNS. If the root domain already receives email, use an unused subdomain such as inbox.example.com.
610
+
611
+ Body `create_email_domain_request` (`CreateEmailDomainRequest`): `hostname` (string, required), `account_id` (string), `reason` (string or null).
612
+
613
+ ### Read a custom email domain
614
+
615
+ `GET /v1/account/email_domains/{domain_id}` · [web reference](https://revdoku.com/api/reference/email-domains.md#read-a-custom-email-domain)
616
+
617
+ `client.api.get_email_domain(domain_id)`
618
+
619
+ Requires a full-account owner or administrator credential. Returns the domain status and the DNS records to publish.
620
+
621
+ Parameters: `domain_id` (string, required), `account_id` (string).
622
+
623
+ ### Remove an unused custom email domain
624
+
625
+ `DELETE /v1/account/email_domains/{domain_id}` · [web reference](https://revdoku.com/api/reference/email-domains.md#remove-an-unused-custom-email-domain)
626
+
627
+ `client.api.delete_email_domain(domain_id, delete_email_domain_request)`
628
+
629
+ Send the domain hostname and confirm=true. A domain that mailbox addresses still use returns EMAIL_DOMAIN_IN_USE.
630
+
631
+ Parameters: `domain_id` (string, required).
632
+
633
+ Body `delete_email_domain_request` (`DeleteEmailDomainRequest`): `hostname` (string, required), `confirm` (boolean `true`, required), `account_id` (string), `reason` (string or null).
634
+
635
+ ### Check DNS and provider setup again
636
+
637
+ `POST /v1/account/email_domains/{domain_id}/verify` · [web reference](https://revdoku.com/api/reference/email-domains.md#check-dns-and-provider-setup-again)
638
+
639
+ `client.api.verify_email_domain(domain_id, verify_email_domain_request)`
640
+
641
+ Queues the check and returns the current state. Read the domain again to see the result.
642
+
643
+ Parameters: `domain_id` (string, required).
644
+
645
+ Body `verify_email_domain_request` (`VerifyEmailDomainRequest`): `account_id` (string), `reason` (string or null).