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,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
+ /**
17
+ *
18
+ * @export
19
+ * @interface CreateInboxRequest
20
+ */
21
+ export interface CreateInboxRequest {
22
+ /**
23
+ * Local part only (e.g. `agent-1`)
24
+ * @type {string}
25
+ * @memberof CreateInboxRequest
26
+ */
27
+ localPart: string;
28
+ /**
29
+ *
30
+ * @type {string}
31
+ * @memberof CreateInboxRequest
32
+ */
33
+ displayName?: string;
34
+ /**
35
+ * Optional domain. Defaults to shared app domain.
36
+ * @type {string}
37
+ * @memberof CreateInboxRequest
38
+ */
39
+ domainName?: string;
40
+ }
41
+
42
+ /**
43
+ * Check if a given object implements the CreateInboxRequest interface.
44
+ */
45
+ export function instanceOfCreateInboxRequest(value: object): value is CreateInboxRequest {
46
+ if (!('localPart' in value) || value['localPart'] === undefined) return false;
47
+ return true;
48
+ }
49
+
50
+ export function CreateInboxRequestFromJSON(json: any): CreateInboxRequest {
51
+ return CreateInboxRequestFromJSONTyped(json, false);
52
+ }
53
+
54
+ export function CreateInboxRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateInboxRequest {
55
+ if (json == null) {
56
+ return json;
57
+ }
58
+ return {
59
+
60
+ 'localPart': json['localPart'],
61
+ 'displayName': json['displayName'] == null ? undefined : json['displayName'],
62
+ 'domainName': json['domainName'] == null ? undefined : json['domainName'],
63
+ };
64
+ }
65
+
66
+ export function CreateInboxRequestToJSON(json: any): CreateInboxRequest {
67
+ return CreateInboxRequestToJSONTyped(json, false);
68
+ }
69
+
70
+ export function CreateInboxRequestToJSONTyped(value?: CreateInboxRequest | null, ignoreDiscriminator: boolean = false): any {
71
+ if (value == null) {
72
+ return value;
73
+ }
74
+
75
+ return {
76
+
77
+ 'localPart': value['localPart'],
78
+ 'displayName': value['displayName'],
79
+ 'domainName': value['domainName'],
80
+ };
81
+ }
82
+
@@ -0,0 +1,152 @@
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 Domain
20
+ */
21
+ export interface Domain {
22
+ [key: string]: any | any;
23
+ /**
24
+ *
25
+ * @type {string}
26
+ * @memberof Domain
27
+ */
28
+ id: string;
29
+ /**
30
+ *
31
+ * @type {string}
32
+ * @memberof Domain
33
+ */
34
+ orgId: string;
35
+ /**
36
+ *
37
+ * @type {string}
38
+ * @memberof Domain
39
+ */
40
+ name: string;
41
+ /**
42
+ *
43
+ * @type {string}
44
+ * @memberof Domain
45
+ */
46
+ providerDomainId?: string | null;
47
+ /**
48
+ *
49
+ * @type {string}
50
+ * @memberof Domain
51
+ */
52
+ providerRouteId?: string | null;
53
+ /**
54
+ *
55
+ * @type {string}
56
+ * @memberof Domain
57
+ */
58
+ status: DomainStatusEnum;
59
+ /**
60
+ *
61
+ * @type {Array<{ [key: string]: any; }>}
62
+ * @memberof Domain
63
+ */
64
+ dnsRecordsJson: Array<{ [key: string]: any; }>;
65
+ /**
66
+ *
67
+ * @type {Date}
68
+ * @memberof Domain
69
+ */
70
+ createdAt: Date;
71
+ /**
72
+ *
73
+ * @type {Date}
74
+ * @memberof Domain
75
+ */
76
+ updatedAt: Date;
77
+ }
78
+
79
+
80
+ /**
81
+ * @export
82
+ */
83
+ export const DomainStatusEnum = {
84
+ Pending: 'pending',
85
+ Active: 'active',
86
+ Failed: 'failed',
87
+ Deleted: 'deleted'
88
+ } as const;
89
+ export type DomainStatusEnum = typeof DomainStatusEnum[keyof typeof DomainStatusEnum];
90
+
91
+
92
+ /**
93
+ * Check if a given object implements the Domain interface.
94
+ */
95
+ export function instanceOfDomain(value: object): value is Domain {
96
+ if (!('id' in value) || value['id'] === undefined) return false;
97
+ if (!('orgId' in value) || value['orgId'] === undefined) return false;
98
+ if (!('name' in value) || value['name'] === undefined) return false;
99
+ if (!('status' in value) || value['status'] === undefined) return false;
100
+ if (!('dnsRecordsJson' in value) || value['dnsRecordsJson'] === undefined) return false;
101
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
102
+ if (!('updatedAt' in value) || value['updatedAt'] === undefined) return false;
103
+ return true;
104
+ }
105
+
106
+ export function DomainFromJSON(json: any): Domain {
107
+ return DomainFromJSONTyped(json, false);
108
+ }
109
+
110
+ export function DomainFromJSONTyped(json: any, ignoreDiscriminator: boolean): Domain {
111
+ if (json == null) {
112
+ return json;
113
+ }
114
+ return {
115
+
116
+ ...json,
117
+ 'id': json['id'],
118
+ 'orgId': json['org_id'],
119
+ 'name': json['name'],
120
+ 'providerDomainId': json['provider_domain_id'] == null ? undefined : json['provider_domain_id'],
121
+ 'providerRouteId': json['provider_route_id'] == null ? undefined : json['provider_route_id'],
122
+ 'status': json['status'],
123
+ 'dnsRecordsJson': json['dns_records_json'],
124
+ 'createdAt': (new Date(json['created_at'])),
125
+ 'updatedAt': (new Date(json['updated_at'])),
126
+ };
127
+ }
128
+
129
+ export function DomainToJSON(json: any): Domain {
130
+ return DomainToJSONTyped(json, false);
131
+ }
132
+
133
+ export function DomainToJSONTyped(value?: Domain | null, ignoreDiscriminator: boolean = false): any {
134
+ if (value == null) {
135
+ return value;
136
+ }
137
+
138
+ return {
139
+
140
+ ...value,
141
+ 'id': value['id'],
142
+ 'org_id': value['orgId'],
143
+ 'name': value['name'],
144
+ 'provider_domain_id': value['providerDomainId'],
145
+ 'provider_route_id': value['providerRouteId'],
146
+ 'status': value['status'],
147
+ 'dns_records_json': value['dnsRecordsJson'],
148
+ 'created_at': ((value['createdAt']).toISOString()),
149
+ 'updated_at': ((value['updatedAt']).toISOString()),
150
+ };
151
+ }
152
+
@@ -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 { Domain } from './Domain';
17
+ import {
18
+ DomainFromJSON,
19
+ DomainFromJSONTyped,
20
+ DomainToJSON,
21
+ DomainToJSONTyped,
22
+ } from './Domain';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface DomainListResponse
28
+ */
29
+ export interface DomainListResponse {
30
+ /**
31
+ *
32
+ * @type {Array<Domain>}
33
+ * @memberof DomainListResponse
34
+ */
35
+ data: Array<Domain>;
36
+ }
37
+
38
+ /**
39
+ * Check if a given object implements the DomainListResponse interface.
40
+ */
41
+ export function instanceOfDomainListResponse(value: object): value is DomainListResponse {
42
+ if (!('data' in value) || value['data'] === undefined) return false;
43
+ return true;
44
+ }
45
+
46
+ export function DomainListResponseFromJSON(json: any): DomainListResponse {
47
+ return DomainListResponseFromJSONTyped(json, false);
48
+ }
49
+
50
+ export function DomainListResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): DomainListResponse {
51
+ if (json == null) {
52
+ return json;
53
+ }
54
+ return {
55
+
56
+ 'data': ((json['data'] as Array<any>).map(DomainFromJSON)),
57
+ };
58
+ }
59
+
60
+ export function DomainListResponseToJSON(json: any): DomainListResponse {
61
+ return DomainListResponseToJSONTyped(json, false);
62
+ }
63
+
64
+ export function DomainListResponseToJSONTyped(value?: DomainListResponse | 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(DomainToJSON)),
72
+ };
73
+ }
74
+
@@ -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 { Domain } from './Domain';
17
+ import {
18
+ DomainFromJSON,
19
+ DomainFromJSONTyped,
20
+ DomainToJSON,
21
+ DomainToJSONTyped,
22
+ } from './Domain';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface DomainResponse
28
+ */
29
+ export interface DomainResponse {
30
+ /**
31
+ *
32
+ * @type {Domain}
33
+ * @memberof DomainResponse
34
+ */
35
+ data: Domain;
36
+ }
37
+
38
+ /**
39
+ * Check if a given object implements the DomainResponse interface.
40
+ */
41
+ export function instanceOfDomainResponse(value: object): value is DomainResponse {
42
+ if (!('data' in value) || value['data'] === undefined) return false;
43
+ return true;
44
+ }
45
+
46
+ export function DomainResponseFromJSON(json: any): DomainResponse {
47
+ return DomainResponseFromJSONTyped(json, false);
48
+ }
49
+
50
+ export function DomainResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): DomainResponse {
51
+ if (json == null) {
52
+ return json;
53
+ }
54
+ return {
55
+
56
+ 'data': DomainFromJSON(json['data']),
57
+ };
58
+ }
59
+
60
+ export function DomainResponseToJSON(json: any): DomainResponse {
61
+ return DomainResponseToJSONTyped(json, false);
62
+ }
63
+
64
+ export function DomainResponseToJSONTyped(value?: DomainResponse | null, ignoreDiscriminator: boolean = false): any {
65
+ if (value == null) {
66
+ return value;
67
+ }
68
+
69
+ return {
70
+
71
+ 'data': DomainToJSON(value['data']),
72
+ };
73
+ }
74
+
@@ -0,0 +1,222 @@
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 Email
20
+ */
21
+ export interface Email {
22
+ [key: string]: any | any;
23
+ /**
24
+ *
25
+ * @type {string}
26
+ * @memberof Email
27
+ */
28
+ id: string;
29
+ /**
30
+ *
31
+ * @type {string}
32
+ * @memberof Email
33
+ */
34
+ orgId: string;
35
+ /**
36
+ *
37
+ * @type {string}
38
+ * @memberof Email
39
+ */
40
+ inboxId?: string | null;
41
+ /**
42
+ *
43
+ * @type {string}
44
+ * @memberof Email
45
+ */
46
+ direction: EmailDirectionEnum;
47
+ /**
48
+ *
49
+ * @type {string}
50
+ * @memberof Email
51
+ */
52
+ deliveryStatus: EmailDeliveryStatusEnum;
53
+ /**
54
+ *
55
+ * @type {string}
56
+ * @memberof Email
57
+ */
58
+ messageId?: string | null;
59
+ /**
60
+ *
61
+ * @type {string}
62
+ * @memberof Email
63
+ */
64
+ subject: string;
65
+ /**
66
+ *
67
+ * @type {string}
68
+ * @memberof Email
69
+ */
70
+ fromAddress: string;
71
+ /**
72
+ *
73
+ * @type {Array<string>}
74
+ * @memberof Email
75
+ */
76
+ toAddresses: Array<string>;
77
+ /**
78
+ *
79
+ * @type {string}
80
+ * @memberof Email
81
+ */
82
+ textBody?: string | null;
83
+ /**
84
+ *
85
+ * @type {string}
86
+ * @memberof Email
87
+ */
88
+ htmlBody?: string | null;
89
+ /**
90
+ *
91
+ * @type {boolean}
92
+ * @memberof Email
93
+ */
94
+ isRead: boolean;
95
+ /**
96
+ *
97
+ * @type {string}
98
+ * @memberof Email
99
+ */
100
+ status: EmailStatusEnum;
101
+ /**
102
+ *
103
+ * @type {{ [key: string]: any; }}
104
+ * @memberof Email
105
+ */
106
+ providerPayload?: { [key: string]: any; } | null;
107
+ /**
108
+ *
109
+ * @type {Date}
110
+ * @memberof Email
111
+ */
112
+ createdAt: Date;
113
+ }
114
+
115
+
116
+ /**
117
+ * @export
118
+ */
119
+ export const EmailDirectionEnum = {
120
+ Inbound: 'inbound',
121
+ Outbound: 'outbound'
122
+ } as const;
123
+ export type EmailDirectionEnum = typeof EmailDirectionEnum[keyof typeof EmailDirectionEnum];
124
+
125
+ /**
126
+ * @export
127
+ */
128
+ export const EmailDeliveryStatusEnum = {
129
+ Unknown: 'unknown',
130
+ Queued: 'queued',
131
+ Sent: 'sent',
132
+ Failed: 'failed',
133
+ Received: 'received'
134
+ } as const;
135
+ export type EmailDeliveryStatusEnum = typeof EmailDeliveryStatusEnum[keyof typeof EmailDeliveryStatusEnum];
136
+
137
+ /**
138
+ * @export
139
+ */
140
+ export const EmailStatusEnum = {
141
+ Active: 'active',
142
+ Deleted: 'deleted'
143
+ } as const;
144
+ export type EmailStatusEnum = typeof EmailStatusEnum[keyof typeof EmailStatusEnum];
145
+
146
+
147
+ /**
148
+ * Check if a given object implements the Email interface.
149
+ */
150
+ export function instanceOfEmail(value: object): value is Email {
151
+ if (!('id' in value) || value['id'] === undefined) return false;
152
+ if (!('orgId' in value) || value['orgId'] === undefined) return false;
153
+ if (!('direction' in value) || value['direction'] === undefined) return false;
154
+ if (!('deliveryStatus' in value) || value['deliveryStatus'] === undefined) return false;
155
+ if (!('subject' in value) || value['subject'] === undefined) return false;
156
+ if (!('fromAddress' in value) || value['fromAddress'] === undefined) return false;
157
+ if (!('toAddresses' in value) || value['toAddresses'] === undefined) return false;
158
+ if (!('isRead' in value) || value['isRead'] === undefined) return false;
159
+ if (!('status' in value) || value['status'] === undefined) return false;
160
+ if (!('createdAt' in value) || value['createdAt'] === undefined) return false;
161
+ return true;
162
+ }
163
+
164
+ export function EmailFromJSON(json: any): Email {
165
+ return EmailFromJSONTyped(json, false);
166
+ }
167
+
168
+ export function EmailFromJSONTyped(json: any, ignoreDiscriminator: boolean): Email {
169
+ if (json == null) {
170
+ return json;
171
+ }
172
+ return {
173
+
174
+ ...json,
175
+ 'id': json['id'],
176
+ 'orgId': json['org_id'],
177
+ 'inboxId': json['inbox_id'] == null ? undefined : json['inbox_id'],
178
+ 'direction': json['direction'],
179
+ 'deliveryStatus': json['delivery_status'],
180
+ 'messageId': json['message_id'] == null ? undefined : json['message_id'],
181
+ 'subject': json['subject'],
182
+ 'fromAddress': json['from_address'],
183
+ 'toAddresses': json['to_addresses'],
184
+ 'textBody': json['text_body'] == null ? undefined : json['text_body'],
185
+ 'htmlBody': json['html_body'] == null ? undefined : json['html_body'],
186
+ 'isRead': json['is_read'],
187
+ 'status': json['status'],
188
+ 'providerPayload': json['provider_payload'] == null ? undefined : json['provider_payload'],
189
+ 'createdAt': (new Date(json['created_at'])),
190
+ };
191
+ }
192
+
193
+ export function EmailToJSON(json: any): Email {
194
+ return EmailToJSONTyped(json, false);
195
+ }
196
+
197
+ export function EmailToJSONTyped(value?: Email | null, ignoreDiscriminator: boolean = false): any {
198
+ if (value == null) {
199
+ return value;
200
+ }
201
+
202
+ return {
203
+
204
+ ...value,
205
+ 'id': value['id'],
206
+ 'org_id': value['orgId'],
207
+ 'inbox_id': value['inboxId'],
208
+ 'direction': value['direction'],
209
+ 'delivery_status': value['deliveryStatus'],
210
+ 'message_id': value['messageId'],
211
+ 'subject': value['subject'],
212
+ 'from_address': value['fromAddress'],
213
+ 'to_addresses': value['toAddresses'],
214
+ 'text_body': value['textBody'],
215
+ 'html_body': value['htmlBody'],
216
+ 'is_read': value['isRead'],
217
+ 'status': value['status'],
218
+ 'provider_payload': value['providerPayload'],
219
+ 'created_at': ((value['createdAt']).toISOString()),
220
+ };
221
+ }
222
+
@@ -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 { Email } from './Email';
17
+ import {
18
+ EmailFromJSON,
19
+ EmailFromJSONTyped,
20
+ EmailToJSON,
21
+ EmailToJSONTyped,
22
+ } from './Email';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface EmailListResponse
28
+ */
29
+ export interface EmailListResponse {
30
+ /**
31
+ *
32
+ * @type {Array<Email>}
33
+ * @memberof EmailListResponse
34
+ */
35
+ data: Array<Email>;
36
+ }
37
+
38
+ /**
39
+ * Check if a given object implements the EmailListResponse interface.
40
+ */
41
+ export function instanceOfEmailListResponse(value: object): value is EmailListResponse {
42
+ if (!('data' in value) || value['data'] === undefined) return false;
43
+ return true;
44
+ }
45
+
46
+ export function EmailListResponseFromJSON(json: any): EmailListResponse {
47
+ return EmailListResponseFromJSONTyped(json, false);
48
+ }
49
+
50
+ export function EmailListResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): EmailListResponse {
51
+ if (json == null) {
52
+ return json;
53
+ }
54
+ return {
55
+
56
+ 'data': ((json['data'] as Array<any>).map(EmailFromJSON)),
57
+ };
58
+ }
59
+
60
+ export function EmailListResponseToJSON(json: any): EmailListResponse {
61
+ return EmailListResponseToJSONTyped(json, false);
62
+ }
63
+
64
+ export function EmailListResponseToJSONTyped(value?: EmailListResponse | 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(EmailToJSON)),
72
+ };
73
+ }
74
+