agentmail-clone-v1 0.1.0

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 (227) hide show
  1. package/.env.example +20 -0
  2. package/.github/workflows/docs-deploy.yml +37 -0
  3. package/.github/workflows/landing-preview.yml +43 -0
  4. package/.github/workflows/openapi-lint.yml +31 -0
  5. package/.github/workflows/sdk-generate-check.yml +66 -0
  6. package/.github/workflows/sdk-release.yml +62 -0
  7. package/CHANGELOG.md +10 -0
  8. package/README.md +208 -0
  9. package/RELEASING.md +43 -0
  10. package/docs/api-reference/api-keys.mdx +11 -0
  11. package/docs/api-reference/domains.mdx +13 -0
  12. package/docs/api-reference/emails.mdx +26 -0
  13. package/docs/api-reference/inboxes.mdx +13 -0
  14. package/docs/api-reference/metrics.mdx +10 -0
  15. package/docs/authentication.mdx +25 -0
  16. package/docs/docs.json +35 -0
  17. package/docs/errors.mdx +34 -0
  18. package/docs/favicon.svg +5 -0
  19. package/docs/idempotency.mdx +18 -0
  20. package/docs/index.mdx +24 -0
  21. package/docs/quickstart.mdx +134 -0
  22. package/landing/DEPLOYING.md +33 -0
  23. package/landing/favicon.svg +5 -0
  24. package/landing/index.html +129 -0
  25. package/landing/main.js +45 -0
  26. package/landing/privacy.html +29 -0
  27. package/landing/styles.css +356 -0
  28. package/landing/terms.html +29 -0
  29. package/netlify.toml +15 -0
  30. package/openapi/openapi.yaml +1016 -0
  31. package/package.json +34 -0
  32. package/render.yaml +48 -0
  33. package/scripts/generate-sdk-py.sh +16 -0
  34. package/scripts/generate-sdk-ts.sh +16 -0
  35. package/scripts/migrate.js +66 -0
  36. package/scripts/validate-docs.js +56 -0
  37. package/scripts/validate-landing.js +39 -0
  38. package/sdks/python/README.md +40 -0
  39. package/sdks/python/emailagent_sdk/__init__.py +157 -0
  40. package/sdks/python/generated/.openapi-generator/FILES +101 -0
  41. package/sdks/python/generated/.openapi-generator/VERSION +1 -0
  42. package/sdks/python/generated/.openapi-generator-ignore +23 -0
  43. package/sdks/python/generated/emailagent_sdk_generated/__init__.py +105 -0
  44. package/sdks/python/generated/emailagent_sdk_generated/api/__init__.py +9 -0
  45. package/sdks/python/generated/emailagent_sdk_generated/api/api_keys_api.py +1162 -0
  46. package/sdks/python/generated/emailagent_sdk_generated/api/domains_api.py +1168 -0
  47. package/sdks/python/generated/emailagent_sdk_generated/api/emails_api.py +1232 -0
  48. package/sdks/python/generated/emailagent_sdk_generated/api/inboxes_api.py +1191 -0
  49. package/sdks/python/generated/emailagent_sdk_generated/api/metrics_api.py +285 -0
  50. package/sdks/python/generated/emailagent_sdk_generated/api_client.py +801 -0
  51. package/sdks/python/generated/emailagent_sdk_generated/api_response.py +21 -0
  52. package/sdks/python/generated/emailagent_sdk_generated/configuration.py +586 -0
  53. package/sdks/python/generated/emailagent_sdk_generated/docs/APIKeysApi.md +334 -0
  54. package/sdks/python/generated/emailagent_sdk_generated/docs/ApiKeyCreated.md +35 -0
  55. package/sdks/python/generated/emailagent_sdk_generated/docs/ApiKeyCreatedResponse.md +29 -0
  56. package/sdks/python/generated/emailagent_sdk_generated/docs/ApiKeyListItem.md +35 -0
  57. package/sdks/python/generated/emailagent_sdk_generated/docs/ApiKeyListResponse.md +29 -0
  58. package/sdks/python/generated/emailagent_sdk_generated/docs/CreateApiKeyRequest.md +30 -0
  59. package/sdks/python/generated/emailagent_sdk_generated/docs/CreateApiKeyRequestScopes.md +29 -0
  60. package/sdks/python/generated/emailagent_sdk_generated/docs/CreateDomainRequest.md +29 -0
  61. package/sdks/python/generated/emailagent_sdk_generated/docs/CreateInboxRequest.md +31 -0
  62. package/sdks/python/generated/emailagent_sdk_generated/docs/Domain.md +37 -0
  63. package/sdks/python/generated/emailagent_sdk_generated/docs/DomainListResponse.md +29 -0
  64. package/sdks/python/generated/emailagent_sdk_generated/docs/DomainResponse.md +29 -0
  65. package/sdks/python/generated/emailagent_sdk_generated/docs/DomainsApi.md +336 -0
  66. package/sdks/python/generated/emailagent_sdk_generated/docs/Email.md +43 -0
  67. package/sdks/python/generated/emailagent_sdk_generated/docs/EmailListResponse.md +29 -0
  68. package/sdks/python/generated/emailagent_sdk_generated/docs/EmailResponse.md +29 -0
  69. package/sdks/python/generated/emailagent_sdk_generated/docs/EmailsApi.md +353 -0
  70. package/sdks/python/generated/emailagent_sdk_generated/docs/ErrorResponse.md +29 -0
  71. package/sdks/python/generated/emailagent_sdk_generated/docs/Inbox.md +38 -0
  72. package/sdks/python/generated/emailagent_sdk_generated/docs/InboxListResponse.md +29 -0
  73. package/sdks/python/generated/emailagent_sdk_generated/docs/InboxResponse.md +29 -0
  74. package/sdks/python/generated/emailagent_sdk_generated/docs/InboxesApi.md +337 -0
  75. package/sdks/python/generated/emailagent_sdk_generated/docs/MetricsApi.md +83 -0
  76. package/sdks/python/generated/emailagent_sdk_generated/docs/MetricsData.md +35 -0
  77. package/sdks/python/generated/emailagent_sdk_generated/docs/MetricsResponse.md +29 -0
  78. package/sdks/python/generated/emailagent_sdk_generated/docs/OkResponse.md +29 -0
  79. package/sdks/python/generated/emailagent_sdk_generated/docs/PlanLimits.md +32 -0
  80. package/sdks/python/generated/emailagent_sdk_generated/docs/SendEmailRequest.md +32 -0
  81. package/sdks/python/generated/emailagent_sdk_generated/docs/UpdateEmailReadRequest.md +29 -0
  82. package/sdks/python/generated/emailagent_sdk_generated/docs/UpdateInboxRequest.md +29 -0
  83. package/sdks/python/generated/emailagent_sdk_generated/exceptions.py +216 -0
  84. package/sdks/python/generated/emailagent_sdk_generated/models/__init__.py +41 -0
  85. package/sdks/python/generated/emailagent_sdk_generated/models/api_key_created.py +113 -0
  86. package/sdks/python/generated/emailagent_sdk_generated/models/api_key_created_response.py +91 -0
  87. package/sdks/python/generated/emailagent_sdk_generated/models/api_key_list_item.py +123 -0
  88. package/sdks/python/generated/emailagent_sdk_generated/models/api_key_list_response.py +95 -0
  89. package/sdks/python/generated/emailagent_sdk_generated/models/create_api_key_request.py +93 -0
  90. package/sdks/python/generated/emailagent_sdk_generated/models/create_api_key_request_scopes.py +143 -0
  91. package/sdks/python/generated/emailagent_sdk_generated/models/create_domain_request.py +87 -0
  92. package/sdks/python/generated/emailagent_sdk_generated/models/create_inbox_request.py +91 -0
  93. package/sdks/python/generated/emailagent_sdk_generated/models/domain.py +134 -0
  94. package/sdks/python/generated/emailagent_sdk_generated/models/domain_list_response.py +95 -0
  95. package/sdks/python/generated/emailagent_sdk_generated/models/domain_response.py +91 -0
  96. package/sdks/python/generated/emailagent_sdk_generated/models/email.py +175 -0
  97. package/sdks/python/generated/emailagent_sdk_generated/models/email_list_response.py +95 -0
  98. package/sdks/python/generated/emailagent_sdk_generated/models/email_response.py +91 -0
  99. package/sdks/python/generated/emailagent_sdk_generated/models/error_response.py +87 -0
  100. package/sdks/python/generated/emailagent_sdk_generated/models/inbox.py +136 -0
  101. package/sdks/python/generated/emailagent_sdk_generated/models/inbox_list_response.py +95 -0
  102. package/sdks/python/generated/emailagent_sdk_generated/models/inbox_response.py +91 -0
  103. package/sdks/python/generated/emailagent_sdk_generated/models/metrics_data.py +110 -0
  104. package/sdks/python/generated/emailagent_sdk_generated/models/metrics_response.py +91 -0
  105. package/sdks/python/generated/emailagent_sdk_generated/models/ok_response.py +87 -0
  106. package/sdks/python/generated/emailagent_sdk_generated/models/plan_limits.py +93 -0
  107. package/sdks/python/generated/emailagent_sdk_generated/models/send_email_request.py +93 -0
  108. package/sdks/python/generated/emailagent_sdk_generated/models/update_email_read_request.py +87 -0
  109. package/sdks/python/generated/emailagent_sdk_generated/models/update_inbox_request.py +92 -0
  110. package/sdks/python/generated/emailagent_sdk_generated/rest.py +258 -0
  111. package/sdks/python/generated/emailagent_sdk_generated/test/__init__.py +0 -0
  112. package/sdks/python/generated/emailagent_sdk_generated/test/test_api_key_created.py +68 -0
  113. package/sdks/python/generated/emailagent_sdk_generated/test/test_api_key_created_response.py +52 -0
  114. package/sdks/python/generated/emailagent_sdk_generated/test/test_api_key_list_item.py +66 -0
  115. package/sdks/python/generated/emailagent_sdk_generated/test/test_api_key_list_response.py +56 -0
  116. package/sdks/python/generated/emailagent_sdk_generated/test/test_api_keys_api.py +59 -0
  117. package/sdks/python/generated/emailagent_sdk_generated/test/test_create_api_key_request.py +53 -0
  118. package/sdks/python/generated/emailagent_sdk_generated/test/test_create_api_key_request_scopes.py +50 -0
  119. package/sdks/python/generated/emailagent_sdk_generated/test/test_create_domain_request.py +52 -0
  120. package/sdks/python/generated/emailagent_sdk_generated/test/test_create_inbox_request.py +54 -0
  121. package/sdks/python/generated/emailagent_sdk_generated/test/test_domain.py +70 -0
  122. package/sdks/python/generated/emailagent_sdk_generated/test/test_domain_list_response.py +56 -0
  123. package/sdks/python/generated/emailagent_sdk_generated/test/test_domain_response.py +52 -0
  124. package/sdks/python/generated/emailagent_sdk_generated/test/test_domains_api.py +59 -0
  125. package/sdks/python/generated/emailagent_sdk_generated/test/test_email.py +79 -0
  126. package/sdks/python/generated/emailagent_sdk_generated/test/test_email_list_response.py +56 -0
  127. package/sdks/python/generated/emailagent_sdk_generated/test/test_email_response.py +52 -0
  128. package/sdks/python/generated/emailagent_sdk_generated/test/test_emails_api.py +59 -0
  129. package/sdks/python/generated/emailagent_sdk_generated/test/test_error_response.py +52 -0
  130. package/sdks/python/generated/emailagent_sdk_generated/test/test_inbox.py +68 -0
  131. package/sdks/python/generated/emailagent_sdk_generated/test/test_inbox_list_response.py +56 -0
  132. package/sdks/python/generated/emailagent_sdk_generated/test/test_inbox_response.py +52 -0
  133. package/sdks/python/generated/emailagent_sdk_generated/test/test_inboxes_api.py +59 -0
  134. package/sdks/python/generated/emailagent_sdk_generated/test/test_metrics_api.py +38 -0
  135. package/sdks/python/generated/emailagent_sdk_generated/test/test_metrics_data.py +72 -0
  136. package/sdks/python/generated/emailagent_sdk_generated/test/test_metrics_response.py +74 -0
  137. package/sdks/python/generated/emailagent_sdk_generated/test/test_ok_response.py +52 -0
  138. package/sdks/python/generated/emailagent_sdk_generated/test/test_plan_limits.py +58 -0
  139. package/sdks/python/generated/emailagent_sdk_generated/test/test_send_email_request.py +56 -0
  140. package/sdks/python/generated/emailagent_sdk_generated/test/test_update_email_read_request.py +52 -0
  141. package/sdks/python/generated/emailagent_sdk_generated/test/test_update_inbox_request.py +52 -0
  142. package/sdks/python/generated/emailagent_sdk_generated_README.md +140 -0
  143. package/sdks/python/openapitools.json +7 -0
  144. package/sdks/python/pyproject.toml +19 -0
  145. package/sdks/typescript/README.md +41 -0
  146. package/sdks/typescript/generated/.openapi-generator/FILES +41 -0
  147. package/sdks/typescript/generated/.openapi-generator/VERSION +1 -0
  148. package/sdks/typescript/generated/.openapi-generator-ignore +23 -0
  149. package/sdks/typescript/generated/package.json +21 -0
  150. package/sdks/typescript/generated/src/apis/APIKeysApi.ts +314 -0
  151. package/sdks/typescript/generated/src/apis/DomainsApi.ts +314 -0
  152. package/sdks/typescript/generated/src/apis/EmailsApi.ts +350 -0
  153. package/sdks/typescript/generated/src/apis/InboxesApi.ts +329 -0
  154. package/sdks/typescript/generated/src/apis/MetricsApi.ts +93 -0
  155. package/sdks/typescript/generated/src/apis/index.ts +7 -0
  156. package/sdks/typescript/generated/src/index.ts +5 -0
  157. package/sdks/typescript/generated/src/models/ApiKeyCreated.ts +123 -0
  158. package/sdks/typescript/generated/src/models/ApiKeyCreatedResponse.ts +74 -0
  159. package/sdks/typescript/generated/src/models/ApiKeyListItem.ts +121 -0
  160. package/sdks/typescript/generated/src/models/ApiKeyListResponse.ts +74 -0
  161. package/sdks/typescript/generated/src/models/CreateApiKeyRequest.ts +82 -0
  162. package/sdks/typescript/generated/src/models/CreateApiKeyRequestScopes.ts +45 -0
  163. package/sdks/typescript/generated/src/models/CreateDomainRequest.ts +66 -0
  164. package/sdks/typescript/generated/src/models/CreateInboxRequest.ts +82 -0
  165. package/sdks/typescript/generated/src/models/Domain.ts +152 -0
  166. package/sdks/typescript/generated/src/models/DomainListResponse.ts +74 -0
  167. package/sdks/typescript/generated/src/models/DomainResponse.ts +74 -0
  168. package/sdks/typescript/generated/src/models/Email.ts +222 -0
  169. package/sdks/typescript/generated/src/models/EmailListResponse.ts +74 -0
  170. package/sdks/typescript/generated/src/models/EmailResponse.ts +74 -0
  171. package/sdks/typescript/generated/src/models/ErrorResponse.ts +66 -0
  172. package/sdks/typescript/generated/src/models/Inbox.ts +159 -0
  173. package/sdks/typescript/generated/src/models/InboxListResponse.ts +74 -0
  174. package/sdks/typescript/generated/src/models/InboxResponse.ts +74 -0
  175. package/sdks/typescript/generated/src/models/MetricsData.ts +139 -0
  176. package/sdks/typescript/generated/src/models/MetricsResponse.ts +74 -0
  177. package/sdks/typescript/generated/src/models/OkResponse.ts +66 -0
  178. package/sdks/typescript/generated/src/models/PlanLimits.ts +93 -0
  179. package/sdks/typescript/generated/src/models/SendEmailRequest.ts +91 -0
  180. package/sdks/typescript/generated/src/models/UpdateEmailReadRequest.ts +66 -0
  181. package/sdks/typescript/generated/src/models/UpdateInboxRequest.ts +66 -0
  182. package/sdks/typescript/generated/src/models/index.ts +27 -0
  183. package/sdks/typescript/generated/src/runtime.ts +432 -0
  184. package/sdks/typescript/generated/tsconfig.esm.json +7 -0
  185. package/sdks/typescript/generated/tsconfig.json +16 -0
  186. package/sdks/typescript/openapitools.json +8 -0
  187. package/sdks/typescript/package.json +27 -0
  188. package/sdks/typescript/src/index.ts +138 -0
  189. package/sdks/typescript/tsconfig.json +14 -0
  190. package/sql/001_init.sql +143 -0
  191. package/sql/002_local_auth.sql +38 -0
  192. package/sql/003_domain_routes.sql +2 -0
  193. package/sql/004_reliability_primitives.sql +75 -0
  194. package/sql/005_auth_email_flows.sql +22 -0
  195. package/src/config.js +30 -0
  196. package/src/db.js +25 -0
  197. package/src/lib/api-auth.js +55 -0
  198. package/src/lib/auth.js +71 -0
  199. package/src/lib/csrf.js +46 -0
  200. package/src/lib/dodo.js +67 -0
  201. package/src/lib/email-templates.js +67 -0
  202. package/src/lib/idempotency.js +85 -0
  203. package/src/lib/mailgun.js +188 -0
  204. package/src/lib/plan.js +24 -0
  205. package/src/lib/rate-limit.js +43 -0
  206. package/src/lib/security.js +62 -0
  207. package/src/lib/session.js +21 -0
  208. package/src/lib/store.js +638 -0
  209. package/src/lib/transactional-mailer.js +54 -0
  210. package/src/lib/validation.js +30 -0
  211. package/src/routes/api.js +485 -0
  212. package/src/routes/app.js +699 -0
  213. package/src/routes/auth.js +404 -0
  214. package/src/routes/webhooks.js +257 -0
  215. package/src/server.js +79 -0
  216. package/src/views/pages/admin.ejs +58 -0
  217. package/src/views/pages/api-keys.ejs +56 -0
  218. package/src/views/pages/billing.ejs +71 -0
  219. package/src/views/pages/domains.ejs +106 -0
  220. package/src/views/pages/inboxes.ejs +127 -0
  221. package/src/views/pages/login.ejs +57 -0
  222. package/src/views/pages/metrics.ejs +34 -0
  223. package/src/views/pages/reset-password.ejs +19 -0
  224. package/src/views/partials/bottom.ejs +3 -0
  225. package/src/views/partials/csrf-field.ejs +3 -0
  226. package/src/views/partials/flash.ejs +3 -0
  227. package/src/views/partials/top.ejs +130 -0
@@ -0,0 +1,93 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * EmailAgent API
5
+ * API for creating agent inboxes, sending emails, managing custom domains, managing API keys, and reading usage metrics. Authentication uses API keys via `Authorization: Bearer <api_key>`. For mutating endpoints, send an optional `Idempotency-Key` header. - Replaying the same key with the same payload returns the original response. - Reusing a key with a different payload returns `409`.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+
16
+ import * as runtime from '../runtime';
17
+ import type {
18
+ ErrorResponse,
19
+ MetricsResponse,
20
+ } from '../models/index';
21
+ import {
22
+ ErrorResponseFromJSON,
23
+ ErrorResponseToJSON,
24
+ MetricsResponseFromJSON,
25
+ MetricsResponseToJSON,
26
+ } from '../models/index';
27
+
28
+ /**
29
+ * MetricsApi - interface
30
+ *
31
+ * @export
32
+ * @interface MetricsApiInterface
33
+ */
34
+ export interface MetricsApiInterface {
35
+ /**
36
+ *
37
+ * @summary Get organization metrics snapshot
38
+ * @param {*} [options] Override http request option.
39
+ * @throws {RequiredError}
40
+ * @memberof MetricsApiInterface
41
+ */
42
+ getMetricsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<MetricsResponse>>;
43
+
44
+ /**
45
+ * Get organization metrics snapshot
46
+ */
47
+ getMetrics(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<MetricsResponse>;
48
+
49
+ }
50
+
51
+ /**
52
+ *
53
+ */
54
+ export class MetricsApi extends runtime.BaseAPI implements MetricsApiInterface {
55
+
56
+ /**
57
+ * Get organization metrics snapshot
58
+ */
59
+ async getMetricsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<MetricsResponse>> {
60
+ const queryParameters: any = {};
61
+
62
+ const headerParameters: runtime.HTTPHeaders = {};
63
+
64
+ if (this.configuration && this.configuration.accessToken) {
65
+ const token = this.configuration.accessToken;
66
+ const tokenString = await token("bearerAuth", []);
67
+
68
+ if (tokenString) {
69
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
70
+ }
71
+ }
72
+
73
+ let urlPath = `/api/v1/metrics`;
74
+
75
+ const response = await this.request({
76
+ path: urlPath,
77
+ method: 'GET',
78
+ headers: headerParameters,
79
+ query: queryParameters,
80
+ }, initOverrides);
81
+
82
+ return new runtime.JSONApiResponse(response, (jsonValue) => MetricsResponseFromJSON(jsonValue));
83
+ }
84
+
85
+ /**
86
+ * Get organization metrics snapshot
87
+ */
88
+ async getMetrics(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<MetricsResponse> {
89
+ const response = await this.getMetricsRaw(initOverrides);
90
+ return await response.value();
91
+ }
92
+
93
+ }
@@ -0,0 +1,7 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export * from './APIKeysApi';
4
+ export * from './DomainsApi';
5
+ export * from './EmailsApi';
6
+ export * from './InboxesApi';
7
+ export * from './MetricsApi';
@@ -0,0 +1,5 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export * from './runtime';
4
+ export * from './apis/index';
5
+ export * from './models/index';
@@ -0,0 +1,123 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * EmailAgent API
5
+ * API for creating agent inboxes, sending emails, managing custom domains, managing API keys, and reading usage metrics. Authentication uses API keys via `Authorization: Bearer <api_key>`. For mutating endpoints, send an optional `Idempotency-Key` header. - Replaying the same key with the same payload returns the original response. - Reusing a key with a different payload returns `409`.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface ApiKeyCreated
20
+ */
21
+ export interface ApiKeyCreated {
22
+ [key: string]: any | any;
23
+ /**
24
+ *
25
+ * @type {string}
26
+ * @memberof ApiKeyCreated
27
+ */
28
+ id: string;
29
+ /**
30
+ *
31
+ * @type {string}
32
+ * @memberof ApiKeyCreated
33
+ */
34
+ orgId: string;
35
+ /**
36
+ *
37
+ * @type {string}
38
+ * @memberof ApiKeyCreated
39
+ */
40
+ name: string;
41
+ /**
42
+ *
43
+ * @type {string}
44
+ * @memberof ApiKeyCreated
45
+ */
46
+ keyPrefix: string;
47
+ /**
48
+ *
49
+ * @type {Array<string>}
50
+ * @memberof ApiKeyCreated
51
+ */
52
+ scopes: Array<string>;
53
+ /**
54
+ *
55
+ * @type {Date}
56
+ * @memberof ApiKeyCreated
57
+ */
58
+ createdAt: Date;
59
+ /**
60
+ * Full API key value, only returned on create/rotate
61
+ * @type {string}
62
+ * @memberof ApiKeyCreated
63
+ */
64
+ secret: string;
65
+ }
66
+
67
+ /**
68
+ * Check if a given object implements the ApiKeyCreated interface.
69
+ */
70
+ export function instanceOfApiKeyCreated(value: object): value is ApiKeyCreated {
71
+ if (!('id' in value) || value['id'] === undefined) return false;
72
+ if (!('orgId' in value) || value['orgId'] === undefined) return false;
73
+ if (!('name' in value) || value['name'] === undefined) return false;
74
+ if (!('keyPrefix' in value) || value['keyPrefix'] === undefined) return false;
75
+ if (!('scopes' in value) || value['scopes'] === undefined) return false;
76
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
77
+ if (!('secret' in value) || value['secret'] === undefined) return false;
78
+ return true;
79
+ }
80
+
81
+ export function ApiKeyCreatedFromJSON(json: any): ApiKeyCreated {
82
+ return ApiKeyCreatedFromJSONTyped(json, false);
83
+ }
84
+
85
+ export function ApiKeyCreatedFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiKeyCreated {
86
+ if (json == null) {
87
+ return json;
88
+ }
89
+ return {
90
+
91
+ ...json,
92
+ 'id': json['id'],
93
+ 'orgId': json['org_id'],
94
+ 'name': json['name'],
95
+ 'keyPrefix': json['key_prefix'],
96
+ 'scopes': json['scopes'],
97
+ 'createdAt': (new Date(json['created_at'])),
98
+ 'secret': json['secret'],
99
+ };
100
+ }
101
+
102
+ export function ApiKeyCreatedToJSON(json: any): ApiKeyCreated {
103
+ return ApiKeyCreatedToJSONTyped(json, false);
104
+ }
105
+
106
+ export function ApiKeyCreatedToJSONTyped(value?: ApiKeyCreated | null, ignoreDiscriminator: boolean = false): any {
107
+ if (value == null) {
108
+ return value;
109
+ }
110
+
111
+ return {
112
+
113
+ ...value,
114
+ 'id': value['id'],
115
+ 'org_id': value['orgId'],
116
+ 'name': value['name'],
117
+ 'key_prefix': value['keyPrefix'],
118
+ 'scopes': value['scopes'],
119
+ 'created_at': ((value['createdAt']).toISOString()),
120
+ 'secret': value['secret'],
121
+ };
122
+ }
123
+
@@ -0,0 +1,74 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * EmailAgent API
5
+ * API for creating agent inboxes, sending emails, managing custom domains, managing API keys, and reading usage metrics. Authentication uses API keys via `Authorization: Bearer <api_key>`. For mutating endpoints, send an optional `Idempotency-Key` header. - Replaying the same key with the same payload returns the original response. - Reusing a key with a different payload returns `409`.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { ApiKeyCreated } from './ApiKeyCreated';
17
+ import {
18
+ ApiKeyCreatedFromJSON,
19
+ ApiKeyCreatedFromJSONTyped,
20
+ ApiKeyCreatedToJSON,
21
+ ApiKeyCreatedToJSONTyped,
22
+ } from './ApiKeyCreated';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface ApiKeyCreatedResponse
28
+ */
29
+ export interface ApiKeyCreatedResponse {
30
+ /**
31
+ *
32
+ * @type {ApiKeyCreated}
33
+ * @memberof ApiKeyCreatedResponse
34
+ */
35
+ data: ApiKeyCreated;
36
+ }
37
+
38
+ /**
39
+ * Check if a given object implements the ApiKeyCreatedResponse interface.
40
+ */
41
+ export function instanceOfApiKeyCreatedResponse(value: object): value is ApiKeyCreatedResponse {
42
+ if (!('data' in value) || value['data'] === undefined) return false;
43
+ return true;
44
+ }
45
+
46
+ export function ApiKeyCreatedResponseFromJSON(json: any): ApiKeyCreatedResponse {
47
+ return ApiKeyCreatedResponseFromJSONTyped(json, false);
48
+ }
49
+
50
+ export function ApiKeyCreatedResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiKeyCreatedResponse {
51
+ if (json == null) {
52
+ return json;
53
+ }
54
+ return {
55
+
56
+ 'data': ApiKeyCreatedFromJSON(json['data']),
57
+ };
58
+ }
59
+
60
+ export function ApiKeyCreatedResponseToJSON(json: any): ApiKeyCreatedResponse {
61
+ return ApiKeyCreatedResponseToJSONTyped(json, false);
62
+ }
63
+
64
+ export function ApiKeyCreatedResponseToJSONTyped(value?: ApiKeyCreatedResponse | null, ignoreDiscriminator: boolean = false): any {
65
+ if (value == null) {
66
+ return value;
67
+ }
68
+
69
+ return {
70
+
71
+ 'data': ApiKeyCreatedToJSON(value['data']),
72
+ };
73
+ }
74
+
@@ -0,0 +1,121 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * EmailAgent API
5
+ * API for creating agent inboxes, sending emails, managing custom domains, managing API keys, and reading usage metrics. Authentication uses API keys via `Authorization: Bearer <api_key>`. For mutating endpoints, send an optional `Idempotency-Key` header. - Replaying the same key with the same payload returns the original response. - Reusing a key with a different payload returns `409`.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface ApiKeyListItem
20
+ */
21
+ export interface ApiKeyListItem {
22
+ [key: string]: any | any;
23
+ /**
24
+ *
25
+ * @type {string}
26
+ * @memberof ApiKeyListItem
27
+ */
28
+ id: string;
29
+ /**
30
+ *
31
+ * @type {string}
32
+ * @memberof ApiKeyListItem
33
+ */
34
+ name: string;
35
+ /**
36
+ *
37
+ * @type {string}
38
+ * @memberof ApiKeyListItem
39
+ */
40
+ keyPrefix: string;
41
+ /**
42
+ *
43
+ * @type {Array<string>}
44
+ * @memberof ApiKeyListItem
45
+ */
46
+ scopes: Array<string>;
47
+ /**
48
+ *
49
+ * @type {Date}
50
+ * @memberof ApiKeyListItem
51
+ */
52
+ lastUsedAt?: Date | null;
53
+ /**
54
+ *
55
+ * @type {Date}
56
+ * @memberof ApiKeyListItem
57
+ */
58
+ revokedAt?: Date | null;
59
+ /**
60
+ *
61
+ * @type {Date}
62
+ * @memberof ApiKeyListItem
63
+ */
64
+ createdAt: Date;
65
+ }
66
+
67
+ /**
68
+ * Check if a given object implements the ApiKeyListItem interface.
69
+ */
70
+ export function instanceOfApiKeyListItem(value: object): value is ApiKeyListItem {
71
+ if (!('id' in value) || value['id'] === undefined) return false;
72
+ if (!('name' in value) || value['name'] === undefined) return false;
73
+ if (!('keyPrefix' in value) || value['keyPrefix'] === undefined) return false;
74
+ if (!('scopes' in value) || value['scopes'] === undefined) return false;
75
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
76
+ return true;
77
+ }
78
+
79
+ export function ApiKeyListItemFromJSON(json: any): ApiKeyListItem {
80
+ return ApiKeyListItemFromJSONTyped(json, false);
81
+ }
82
+
83
+ export function ApiKeyListItemFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiKeyListItem {
84
+ if (json == null) {
85
+ return json;
86
+ }
87
+ return {
88
+
89
+ ...json,
90
+ 'id': json['id'],
91
+ 'name': json['name'],
92
+ 'keyPrefix': json['key_prefix'],
93
+ 'scopes': json['scopes'],
94
+ 'lastUsedAt': json['last_used_at'] == null ? undefined : (new Date(json['last_used_at'])),
95
+ 'revokedAt': json['revoked_at'] == null ? undefined : (new Date(json['revoked_at'])),
96
+ 'createdAt': (new Date(json['created_at'])),
97
+ };
98
+ }
99
+
100
+ export function ApiKeyListItemToJSON(json: any): ApiKeyListItem {
101
+ return ApiKeyListItemToJSONTyped(json, false);
102
+ }
103
+
104
+ export function ApiKeyListItemToJSONTyped(value?: ApiKeyListItem | null, ignoreDiscriminator: boolean = false): any {
105
+ if (value == null) {
106
+ return value;
107
+ }
108
+
109
+ return {
110
+
111
+ ...value,
112
+ 'id': value['id'],
113
+ 'name': value['name'],
114
+ 'key_prefix': value['keyPrefix'],
115
+ 'scopes': value['scopes'],
116
+ 'last_used_at': value['lastUsedAt'] === null ? null : ((value['lastUsedAt'] as any)?.toISOString()),
117
+ 'revoked_at': value['revokedAt'] === null ? null : ((value['revokedAt'] as any)?.toISOString()),
118
+ 'created_at': ((value['createdAt']).toISOString()),
119
+ };
120
+ }
121
+
@@ -0,0 +1,74 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * EmailAgent API
5
+ * API for creating agent inboxes, sending emails, managing custom domains, managing API keys, and reading usage metrics. Authentication uses API keys via `Authorization: Bearer <api_key>`. For mutating endpoints, send an optional `Idempotency-Key` header. - Replaying the same key with the same payload returns the original response. - Reusing a key with a different payload returns `409`.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { ApiKeyListItem } from './ApiKeyListItem';
17
+ import {
18
+ ApiKeyListItemFromJSON,
19
+ ApiKeyListItemFromJSONTyped,
20
+ ApiKeyListItemToJSON,
21
+ ApiKeyListItemToJSONTyped,
22
+ } from './ApiKeyListItem';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface ApiKeyListResponse
28
+ */
29
+ export interface ApiKeyListResponse {
30
+ /**
31
+ *
32
+ * @type {Array<ApiKeyListItem>}
33
+ * @memberof ApiKeyListResponse
34
+ */
35
+ data: Array<ApiKeyListItem>;
36
+ }
37
+
38
+ /**
39
+ * Check if a given object implements the ApiKeyListResponse interface.
40
+ */
41
+ export function instanceOfApiKeyListResponse(value: object): value is ApiKeyListResponse {
42
+ if (!('data' in value) || value['data'] === undefined) return false;
43
+ return true;
44
+ }
45
+
46
+ export function ApiKeyListResponseFromJSON(json: any): ApiKeyListResponse {
47
+ return ApiKeyListResponseFromJSONTyped(json, false);
48
+ }
49
+
50
+ export function ApiKeyListResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiKeyListResponse {
51
+ if (json == null) {
52
+ return json;
53
+ }
54
+ return {
55
+
56
+ 'data': ((json['data'] as Array<any>).map(ApiKeyListItemFromJSON)),
57
+ };
58
+ }
59
+
60
+ export function ApiKeyListResponseToJSON(json: any): ApiKeyListResponse {
61
+ return ApiKeyListResponseToJSONTyped(json, false);
62
+ }
63
+
64
+ export function ApiKeyListResponseToJSONTyped(value?: ApiKeyListResponse | null, ignoreDiscriminator: boolean = false): any {
65
+ if (value == null) {
66
+ return value;
67
+ }
68
+
69
+ return {
70
+
71
+ 'data': ((value['data'] as Array<any>).map(ApiKeyListItemToJSON)),
72
+ };
73
+ }
74
+
@@ -0,0 +1,82 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * EmailAgent API
5
+ * API for creating agent inboxes, sending emails, managing custom domains, managing API keys, and reading usage metrics. Authentication uses API keys via `Authorization: Bearer <api_key>`. For mutating endpoints, send an optional `Idempotency-Key` header. - Replaying the same key with the same payload returns the original response. - Reusing a key with a different payload returns `409`.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { CreateApiKeyRequestScopes } from './CreateApiKeyRequestScopes';
17
+ import {
18
+ CreateApiKeyRequestScopesFromJSON,
19
+ CreateApiKeyRequestScopesFromJSONTyped,
20
+ CreateApiKeyRequestScopesToJSON,
21
+ CreateApiKeyRequestScopesToJSONTyped,
22
+ } from './CreateApiKeyRequestScopes';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface CreateApiKeyRequest
28
+ */
29
+ export interface CreateApiKeyRequest {
30
+ /**
31
+ *
32
+ * @type {string}
33
+ * @memberof CreateApiKeyRequest
34
+ */
35
+ name: string;
36
+ /**
37
+ *
38
+ * @type {CreateApiKeyRequestScopes}
39
+ * @memberof CreateApiKeyRequest
40
+ */
41
+ scopes?: CreateApiKeyRequestScopes;
42
+ }
43
+
44
+ /**
45
+ * Check if a given object implements the CreateApiKeyRequest interface.
46
+ */
47
+ export function instanceOfCreateApiKeyRequest(value: object): value is CreateApiKeyRequest {
48
+ if (!('name' in value) || value['name'] === undefined) return false;
49
+ return true;
50
+ }
51
+
52
+ export function CreateApiKeyRequestFromJSON(json: any): CreateApiKeyRequest {
53
+ return CreateApiKeyRequestFromJSONTyped(json, false);
54
+ }
55
+
56
+ export function CreateApiKeyRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateApiKeyRequest {
57
+ if (json == null) {
58
+ return json;
59
+ }
60
+ return {
61
+
62
+ 'name': json['name'],
63
+ 'scopes': json['scopes'] == null ? undefined : CreateApiKeyRequestScopesFromJSON(json['scopes']),
64
+ };
65
+ }
66
+
67
+ export function CreateApiKeyRequestToJSON(json: any): CreateApiKeyRequest {
68
+ return CreateApiKeyRequestToJSONTyped(json, false);
69
+ }
70
+
71
+ export function CreateApiKeyRequestToJSONTyped(value?: CreateApiKeyRequest | null, ignoreDiscriminator: boolean = false): any {
72
+ if (value == null) {
73
+ return value;
74
+ }
75
+
76
+ return {
77
+
78
+ 'name': value['name'],
79
+ 'scopes': CreateApiKeyRequestScopesToJSON(value['scopes']),
80
+ };
81
+ }
82
+
@@ -0,0 +1,45 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * EmailAgent API
5
+ * API for creating agent inboxes, sending emails, managing custom domains, managing API keys, and reading usage metrics. Authentication uses API keys via `Authorization: Bearer <api_key>`. For mutating endpoints, send an optional `Idempotency-Key` header. - Replaying the same key with the same payload returns the original response. - Reusing a key with a different payload returns `409`.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ /**
16
+ * @type CreateApiKeyRequestScopes
17
+ * Comma-separated scopes string or array of scopes
18
+ * @export
19
+ */
20
+ export type CreateApiKeyRequestScopes = Array<string> | string;
21
+
22
+ export function CreateApiKeyRequestScopesFromJSON(json: any): CreateApiKeyRequestScopes {
23
+ return CreateApiKeyRequestScopesFromJSONTyped(json, false);
24
+ }
25
+
26
+ export function CreateApiKeyRequestScopesFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateApiKeyRequestScopes {
27
+ if (json == null) {
28
+ return json;
29
+ }
30
+
31
+ return {} as any;
32
+ }
33
+
34
+ export function CreateApiKeyRequestScopesToJSON(json: any): any {
35
+ return CreateApiKeyRequestScopesToJSONTyped(json, false);
36
+ }
37
+
38
+ export function CreateApiKeyRequestScopesToJSONTyped(value?: CreateApiKeyRequestScopes | null, ignoreDiscriminator: boolean = false): any {
39
+ if (value == null) {
40
+ return value;
41
+ }
42
+
43
+ return {};
44
+ }
45
+
@@ -0,0 +1,66 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * EmailAgent API
5
+ * API for creating agent inboxes, sending emails, managing custom domains, managing API keys, and reading usage metrics. Authentication uses API keys via `Authorization: Bearer <api_key>`. For mutating endpoints, send an optional `Idempotency-Key` header. - Replaying the same key with the same payload returns the original response. - Reusing a key with a different payload returns `409`.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface CreateDomainRequest
20
+ */
21
+ export interface CreateDomainRequest {
22
+ /**
23
+ * Domain to onboard, e.g. mail.example.com
24
+ * @type {string}
25
+ * @memberof CreateDomainRequest
26
+ */
27
+ name: string;
28
+ }
29
+
30
+ /**
31
+ * Check if a given object implements the CreateDomainRequest interface.
32
+ */
33
+ export function instanceOfCreateDomainRequest(value: object): value is CreateDomainRequest {
34
+ if (!('name' in value) || value['name'] === undefined) return false;
35
+ return true;
36
+ }
37
+
38
+ export function CreateDomainRequestFromJSON(json: any): CreateDomainRequest {
39
+ return CreateDomainRequestFromJSONTyped(json, false);
40
+ }
41
+
42
+ export function CreateDomainRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateDomainRequest {
43
+ if (json == null) {
44
+ return json;
45
+ }
46
+ return {
47
+
48
+ 'name': json['name'],
49
+ };
50
+ }
51
+
52
+ export function CreateDomainRequestToJSON(json: any): CreateDomainRequest {
53
+ return CreateDomainRequestToJSONTyped(json, false);
54
+ }
55
+
56
+ export function CreateDomainRequestToJSONTyped(value?: CreateDomainRequest | null, ignoreDiscriminator: boolean = false): any {
57
+ if (value == null) {
58
+ return value;
59
+ }
60
+
61
+ return {
62
+
63
+ 'name': value['name'],
64
+ };
65
+ }
66
+