@sapiom/tools 0.10.2 → 0.12.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 (76) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +2 -1
  3. package/dist/cjs/_client/capability-call.d.ts +58 -0
  4. package/dist/cjs/_client/capability-call.d.ts.map +1 -0
  5. package/dist/cjs/_client/capability-call.js +68 -0
  6. package/dist/cjs/_client/capability-call.js.map +1 -0
  7. package/dist/cjs/_client/index.d.ts +1 -0
  8. package/dist/cjs/_client/index.d.ts.map +1 -1
  9. package/dist/cjs/_client/index.js +4 -1
  10. package/dist/cjs/_client/index.js.map +1 -1
  11. package/dist/cjs/client.d.ts +60 -0
  12. package/dist/cjs/client.d.ts.map +1 -1
  13. package/dist/cjs/client.js +32 -0
  14. package/dist/cjs/client.js.map +1 -1
  15. package/dist/cjs/content-generation/index.d.ts +6 -0
  16. package/dist/cjs/content-generation/index.d.ts.map +1 -1
  17. package/dist/cjs/content-generation/index.js +32 -20
  18. package/dist/cjs/content-generation/index.js.map +1 -1
  19. package/dist/cjs/email/errors.d.ts +16 -0
  20. package/dist/cjs/email/errors.d.ts.map +1 -0
  21. package/dist/cjs/email/errors.js +36 -0
  22. package/dist/cjs/email/errors.js.map +1 -0
  23. package/dist/cjs/email/index.d.ts +391 -0
  24. package/dist/cjs/email/index.d.ts.map +1 -0
  25. package/dist/cjs/email/index.js +465 -0
  26. package/dist/cjs/email/index.js.map +1 -0
  27. package/dist/cjs/index.d.ts +3 -1
  28. package/dist/cjs/index.d.ts.map +1 -1
  29. package/dist/cjs/index.js +4 -1
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/search/index.d.ts +6 -1
  32. package/dist/cjs/search/index.d.ts.map +1 -1
  33. package/dist/cjs/search/index.js +89 -90
  34. package/dist/cjs/search/index.js.map +1 -1
  35. package/dist/cjs/stub/index.d.ts.map +1 -1
  36. package/dist/cjs/stub/index.js +116 -0
  37. package/dist/cjs/stub/index.js.map +1 -1
  38. package/dist/esm/_client/capability-call.d.ts +58 -0
  39. package/dist/esm/_client/capability-call.d.ts.map +1 -0
  40. package/dist/esm/_client/capability-call.js +64 -0
  41. package/dist/esm/_client/capability-call.js.map +1 -0
  42. package/dist/esm/_client/index.d.ts +1 -0
  43. package/dist/esm/_client/index.d.ts.map +1 -1
  44. package/dist/esm/_client/index.js +1 -0
  45. package/dist/esm/_client/index.js.map +1 -1
  46. package/dist/esm/client.d.ts +60 -0
  47. package/dist/esm/client.d.ts.map +1 -1
  48. package/dist/esm/client.js +32 -0
  49. package/dist/esm/client.js.map +1 -1
  50. package/dist/esm/content-generation/index.d.ts +6 -0
  51. package/dist/esm/content-generation/index.d.ts.map +1 -1
  52. package/dist/esm/content-generation/index.js +33 -21
  53. package/dist/esm/content-generation/index.js.map +1 -1
  54. package/dist/esm/email/errors.d.ts +16 -0
  55. package/dist/esm/email/errors.d.ts.map +1 -0
  56. package/dist/esm/email/errors.js +31 -0
  57. package/dist/esm/email/errors.js.map +1 -0
  58. package/dist/esm/email/index.d.ts +391 -0
  59. package/dist/esm/email/index.d.ts.map +1 -0
  60. package/dist/esm/email/index.js +446 -0
  61. package/dist/esm/email/index.js.map +1 -0
  62. package/dist/esm/index.d.ts +3 -1
  63. package/dist/esm/index.d.ts.map +1 -1
  64. package/dist/esm/index.js +3 -1
  65. package/dist/esm/index.js.map +1 -1
  66. package/dist/esm/search/index.d.ts +6 -1
  67. package/dist/esm/search/index.d.ts.map +1 -1
  68. package/dist/esm/search/index.js +91 -92
  69. package/dist/esm/search/index.js.map +1 -1
  70. package/dist/esm/stub/index.d.ts.map +1 -1
  71. package/dist/esm/stub/index.js +116 -0
  72. package/dist/esm/stub/index.js.map +1 -1
  73. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  74. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  75. package/package.json +6 -1
  76. package/src/email/README.md +96 -0
@@ -0,0 +1,391 @@
1
+ /**
2
+ * `email` capability — programmatic transactional email: create inboxes, send and
3
+ * receive messages, manage sending domains and threads, and register webhooks for
4
+ * inbound events. Each inbox is a real, addressable mailbox your code owns.
5
+ *
6
+ * import { email } from "@sapiom/tools"; // ambient auth
7
+ *
8
+ * const inbox = await email.inboxes.create({ username: "support" });
9
+ * await email.messages.send(inbox.inboxId, {
10
+ * to: "customer@example.com",
11
+ * subject: "Welcome",
12
+ * text: "Thanks for signing up!",
13
+ * });
14
+ *
15
+ * Or via an explicit client: `createClient({ apiKey }).email.inboxes.create(...)`.
16
+ *
17
+ * Operations are grouped:
18
+ * - `inboxes` — create / list / get / delete mailboxes
19
+ * - `messages` — send / list / get / reply / replyAll / forward
20
+ * - `domains` — register a custom sending domain, verify it, read status
21
+ * - `threads` — list / get conversation threads
22
+ * - `webhooks` — register / delete inbound-event webhooks
23
+ *
24
+ * An `inboxId` is the inbox's email address; message, thread, and domain ids are
25
+ * opaque strings returned by their create/list calls. Failed requests throw
26
+ * {@link EmailHttpError} (carries `status` + parsed `body`).
27
+ */
28
+ import { Transport } from "../_client/index.js";
29
+ import { EmailHttpError } from "./errors.js";
30
+ export { EmailHttpError };
31
+ /**
32
+ * A recipient field — a single email address or a list of them. Used by `to`,
33
+ * `cc`, `bcc`, and `replyTo`.
34
+ */
35
+ export type Recipients = string | string[];
36
+ /** Verification state of a sending domain. */
37
+ export type DomainStatus = "NOT_STARTED" | "PENDING" | "VERIFYING" | "VERIFIED" | "INVALID" | "FAILED";
38
+ export interface CreateInboxInput {
39
+ /** Local part of the address (before the `@`). Generated for you if omitted. */
40
+ username?: string;
41
+ /** A verified custom sending domain to create the address on. Uses the default domain if omitted. */
42
+ domain?: string;
43
+ /** A display name shown to recipients (e.g. "Acme Support"). */
44
+ displayName?: string;
45
+ /** Your own idempotency / correlation key for the inbox. */
46
+ clientId?: string;
47
+ }
48
+ export interface Inbox {
49
+ /** Unique inbox identifier — this is the inbox's email address. */
50
+ inboxId: string;
51
+ /** The inbox's email address. */
52
+ email: string;
53
+ /** Display name shown to recipients, if set. */
54
+ displayName?: string;
55
+ /** Your idempotency / correlation key, if set at creation. */
56
+ clientId?: string;
57
+ /** ISO-8601 timestamp when the inbox was created. */
58
+ createdAt: string;
59
+ /** ISO-8601 timestamp when the inbox was last updated. */
60
+ updatedAt: string;
61
+ }
62
+ export interface ListInboxesOptions {
63
+ /** Maximum number of inboxes to return (1–100). */
64
+ limit?: number;
65
+ /** Opaque page cursor from a previous response's `nextPageToken`. */
66
+ pageToken?: string;
67
+ }
68
+ export interface InboxList {
69
+ /** Number of inboxes on this page. */
70
+ count: number;
71
+ /** Cursor for the next page, if more exist. Pass it back as `pageToken`. */
72
+ nextPageToken?: string;
73
+ /** Inboxes on the current page. */
74
+ inboxes: Inbox[];
75
+ }
76
+ export interface Attachment {
77
+ /** Unique attachment identifier. */
78
+ attachmentId: string;
79
+ /** Original file name, if available. */
80
+ filename?: string;
81
+ /** MIME content type, if available. */
82
+ contentType?: string;
83
+ /** Size in bytes. */
84
+ size: number;
85
+ }
86
+ export interface Message {
87
+ /** Unique message identifier. */
88
+ messageId: string;
89
+ /** Identifier of the thread this message belongs to. */
90
+ threadId: string;
91
+ /** Identifier of the inbox this message belongs to. */
92
+ inboxId: string;
93
+ /** Sender address. */
94
+ from: string;
95
+ /** Recipient addresses. */
96
+ to: string[];
97
+ /** Carbon-copy addresses, if any. */
98
+ cc?: string[];
99
+ /** Blind carbon-copy addresses, if any. */
100
+ bcc?: string[];
101
+ /** Reply-to addresses, if any. */
102
+ replyTo?: string[];
103
+ /** Subject line, if any. */
104
+ subject?: string;
105
+ /** Short preview of the body. */
106
+ preview?: string;
107
+ /** Plain-text body. */
108
+ text?: string;
109
+ /** HTML body. */
110
+ html?: string;
111
+ /** The plain-text body with quoted reply history removed — the "new" content only. */
112
+ extractedText?: string;
113
+ /** The HTML body with quoted reply history removed — the "new" content only. */
114
+ extractedHtml?: string;
115
+ /** Labels applied to the message. */
116
+ labels: string[];
117
+ /** ISO-8601 timestamp of the message. */
118
+ timestamp: string;
119
+ /** The `messageId` this message is a reply to, if any. */
120
+ inReplyTo?: string;
121
+ /** Message ids referenced by this message (threading chain), if any. */
122
+ references?: string[];
123
+ /** Custom headers on the message, if any. */
124
+ headers?: Record<string, string>;
125
+ /** Attachment metadata, if any. */
126
+ attachments?: Attachment[];
127
+ /** Total size in bytes. */
128
+ size: number;
129
+ /** ISO-8601 timestamp when the record was created. */
130
+ createdAt: string;
131
+ /** ISO-8601 timestamp when the record was last updated. */
132
+ updatedAt: string;
133
+ }
134
+ /**
135
+ * A message as it appears in a list — metadata only (no `text` / `html` /
136
+ * `extractedText` / `extractedHtml` / `replyTo`). Fetch the full message with
137
+ * `messages.get` to read the body.
138
+ */
139
+ export type MessageListItem = Omit<Message, "text" | "html" | "extractedText" | "extractedHtml" | "replyTo">;
140
+ export interface MessageList {
141
+ /** Number of messages on this page. */
142
+ count: number;
143
+ /** Cursor for the next page, if more exist. Pass it back as `pageToken`. */
144
+ nextPageToken?: string;
145
+ /** Messages on the current page (metadata only). */
146
+ messages: MessageListItem[];
147
+ }
148
+ export interface ListMessagesOptions {
149
+ /** Maximum number of messages to return (1–100). */
150
+ limit?: number;
151
+ /** Opaque page cursor from a previous response's `nextPageToken`. */
152
+ pageToken?: string;
153
+ }
154
+ /** The result of a send / reply / forward — identifies the created message and its thread. */
155
+ export interface SendResult {
156
+ /** Identifier of the created message. */
157
+ messageId: string;
158
+ /** Identifier of the thread the message belongs to. */
159
+ threadId: string;
160
+ }
161
+ export interface SendMessageInput {
162
+ /** Recipient(s). Required. */
163
+ to: Recipients;
164
+ /** Carbon-copy recipient(s). */
165
+ cc?: Recipients;
166
+ /** Blind carbon-copy recipient(s). */
167
+ bcc?: Recipients;
168
+ /** Reply-to address(es). */
169
+ replyTo?: Recipients;
170
+ /** Subject line. */
171
+ subject?: string;
172
+ /** Plain-text body. */
173
+ text?: string;
174
+ /** HTML body. */
175
+ html?: string;
176
+ /** Custom headers. Routing/identity/MIME headers are rejected — use the dedicated fields instead. */
177
+ headers?: Record<string, string>;
178
+ /** Labels to apply to the sent message. */
179
+ labels?: string[];
180
+ }
181
+ export interface ReplyInput {
182
+ /** Override the recipient(s). Defaults to the original sender if omitted. */
183
+ to?: Recipients;
184
+ /** Carbon-copy recipient(s). */
185
+ cc?: Recipients;
186
+ /** Blind carbon-copy recipient(s). */
187
+ bcc?: Recipients;
188
+ /** Reply-to address(es). */
189
+ replyTo?: Recipients;
190
+ /** Reply to everyone on the original message. */
191
+ replyAll?: boolean;
192
+ /** Plain-text body. */
193
+ text?: string;
194
+ /** HTML body. */
195
+ html?: string;
196
+ /** Custom headers. Routing/identity/MIME headers are rejected — use the dedicated fields instead. */
197
+ headers?: Record<string, string>;
198
+ /** Labels to apply to the reply. */
199
+ labels?: string[];
200
+ }
201
+ export interface ReplyAllInput {
202
+ /** Reply-to address(es). */
203
+ replyTo?: Recipients;
204
+ /** Plain-text body. */
205
+ text?: string;
206
+ /** HTML body. */
207
+ html?: string;
208
+ /** Custom headers. Routing/identity/MIME headers are rejected — use the dedicated fields instead. */
209
+ headers?: Record<string, string>;
210
+ /** Labels to apply to the reply. */
211
+ labels?: string[];
212
+ }
213
+ export interface Thread {
214
+ /** Unique thread identifier. */
215
+ threadId: string;
216
+ /** Identifier of the inbox this thread belongs to. */
217
+ inboxId: string;
218
+ /** Labels applied to the thread. */
219
+ labels: string[];
220
+ /** ISO-8601 timestamp of the thread's latest activity. */
221
+ timestamp: string;
222
+ /** ISO-8601 timestamp of the last received message, if any. */
223
+ receivedTimestamp?: string;
224
+ /** ISO-8601 timestamp of the last sent message, if any. */
225
+ sentTimestamp?: string;
226
+ /** Subject line, if any. */
227
+ subject?: string;
228
+ /** Short preview of the latest message. */
229
+ preview?: string;
230
+ /** Distinct sender addresses in the thread. */
231
+ senders: string[];
232
+ /** Distinct recipient addresses in the thread. */
233
+ recipients: string[];
234
+ /** Identifier of the most recent message in the thread. */
235
+ lastMessageId: string;
236
+ /** Number of messages in the thread. */
237
+ messageCount: number;
238
+ /** Total size in bytes. */
239
+ size: number;
240
+ /** Attachment metadata across the thread, if any. */
241
+ attachments?: Attachment[];
242
+ /** ISO-8601 timestamp when the record was created. */
243
+ createdAt: string;
244
+ /** ISO-8601 timestamp when the record was last updated. */
245
+ updatedAt: string;
246
+ /** The messages in the thread, oldest to newest. */
247
+ messages: Message[];
248
+ }
249
+ /** A thread as it appears in a list — without the `messages` array. */
250
+ export type ThreadListItem = Omit<Thread, "messages">;
251
+ export interface ThreadList {
252
+ /** Number of threads on this page. */
253
+ count: number;
254
+ /** Cursor for the next page, if more exist. Pass it back as `pageToken`. */
255
+ nextPageToken?: string;
256
+ /** Threads on the current page (without their messages). */
257
+ threads: ThreadListItem[];
258
+ }
259
+ export interface ListThreadsOptions {
260
+ /** Maximum number of threads to return (1–100). */
261
+ limit?: number;
262
+ /** Opaque page cursor from a previous response's `nextPageToken`. */
263
+ pageToken?: string;
264
+ }
265
+ export interface CreateDomainInput {
266
+ /** Fully-qualified domain to register, e.g. "mail.example.com". Required. */
267
+ domain: string;
268
+ /** Enable bounce/complaint feedback for this domain. Defaults to false. */
269
+ feedbackEnabled?: boolean;
270
+ }
271
+ /** A DNS record you must publish to verify a domain. */
272
+ export interface DomainRecord {
273
+ /** Record type. */
274
+ type: "TXT" | "CNAME" | "MX";
275
+ /** Record name (host). */
276
+ name: string;
277
+ /** Record value. */
278
+ value: string;
279
+ /** Whether the record has been observed as published and valid. */
280
+ status: "MISSING" | "INVALID" | "VALID";
281
+ /** Priority — present only for MX records. */
282
+ priority?: number;
283
+ }
284
+ export interface Domain {
285
+ /** Unique domain identifier. */
286
+ domainId: string;
287
+ /** The registered domain. */
288
+ domain: string;
289
+ /** Verification status. */
290
+ status: DomainStatus;
291
+ /** Whether bounce/complaint feedback is enabled. */
292
+ feedbackEnabled: boolean;
293
+ /** DNS records to publish to verify the domain. */
294
+ records: DomainRecord[];
295
+ /** ISO-8601 timestamp when the domain was created. */
296
+ createdAt: string;
297
+ /** ISO-8601 timestamp when the domain was last updated (bumps as verification re-checks DNS). */
298
+ updatedAt: string;
299
+ }
300
+ /**
301
+ * A domain as it appears in a list — without the `status` and `records` fields.
302
+ * Call `domains.get` for the full status and DNS records.
303
+ */
304
+ export interface DomainListItem {
305
+ /** Unique domain identifier. */
306
+ domainId: string;
307
+ /** The registered domain. */
308
+ domain: string;
309
+ /** Whether bounce/complaint feedback is enabled. */
310
+ feedbackEnabled: boolean;
311
+ /** ISO-8601 timestamp when the domain was created. */
312
+ createdAt: string;
313
+ /** ISO-8601 timestamp when the domain was last updated. */
314
+ updatedAt: string;
315
+ }
316
+ export interface DomainList {
317
+ /** Number of domains. */
318
+ count: number;
319
+ /** Domains (without status/records). */
320
+ domains: DomainListItem[];
321
+ }
322
+ export interface CreateWebhookInput {
323
+ /** HTTPS URL to deliver events to. Required. */
324
+ url: string;
325
+ /**
326
+ * The event to subscribe to (e.g. "message.received"), or "*" for all events.
327
+ * Required.
328
+ */
329
+ eventType: string;
330
+ }
331
+ export interface Webhook {
332
+ /** Unique webhook identifier. */
333
+ id: number;
334
+ /** The delivery URL. */
335
+ url: string;
336
+ /** The subscribed event type ("*" for all). */
337
+ eventType: string;
338
+ /**
339
+ * Signing secret for verifying delivered event signatures. Returned only at
340
+ * creation time — store it now; it cannot be retrieved later.
341
+ */
342
+ secret: string;
343
+ }
344
+ /** Create a new inbox (a real, addressable mailbox). */
345
+ export declare function createInbox(input?: CreateInboxInput, transport?: Transport, baseUrl?: string): Promise<Inbox>;
346
+ /** List the caller's inboxes. */
347
+ export declare function listInboxes(opts?: ListInboxesOptions, transport?: Transport, baseUrl?: string): Promise<InboxList>;
348
+ /** Fetch a single inbox by id (the inbox's email address). */
349
+ export declare function getInbox(inboxId: string, transport?: Transport, baseUrl?: string): Promise<Inbox>;
350
+ /** Delete an inbox by id. */
351
+ declare function deleteInbox(inboxId: string, transport?: Transport, baseUrl?: string): Promise<void>;
352
+ export { deleteInbox };
353
+ /** Send a new message from an inbox. */
354
+ export declare function sendMessage(inboxId: string, input: SendMessageInput, transport?: Transport, baseUrl?: string): Promise<SendResult>;
355
+ /** List messages in an inbox (metadata only — use `get` for the body). */
356
+ export declare function listMessages(inboxId: string, opts?: ListMessagesOptions, transport?: Transport, baseUrl?: string): Promise<MessageList>;
357
+ /** Fetch a single full message (including body) by id. */
358
+ export declare function getMessage(inboxId: string, messageId: string, transport?: Transport, baseUrl?: string): Promise<Message>;
359
+ /** Reply to a message. */
360
+ export declare function replyMessage(inboxId: string, messageId: string, input?: ReplyInput, transport?: Transport, baseUrl?: string): Promise<SendResult>;
361
+ /** Reply to everyone on a message. */
362
+ export declare function replyAllMessage(inboxId: string, messageId: string, input?: ReplyAllInput, transport?: Transport, baseUrl?: string): Promise<SendResult>;
363
+ /** Forward a message to new recipient(s). */
364
+ export declare function forwardMessage(inboxId: string, messageId: string, input: SendMessageInput, transport?: Transport, baseUrl?: string): Promise<SendResult>;
365
+ /** List conversation threads in an inbox (without their messages). */
366
+ export declare function listThreads(inboxId: string, opts?: ListThreadsOptions, transport?: Transport, baseUrl?: string): Promise<ThreadList>;
367
+ /** Fetch a single full thread (including its messages) by id. */
368
+ export declare function getThread(inboxId: string, threadId: string, transport?: Transport, baseUrl?: string): Promise<Thread>;
369
+ /** Register a custom sending domain. Returns the DNS records to publish. */
370
+ export declare function createDomain(input: CreateDomainInput, transport?: Transport, baseUrl?: string): Promise<Domain>;
371
+ /**
372
+ * Trigger DNS re-verification for a domain. Returns nothing — re-fetch the domain
373
+ * with `domains.get` to read the updated status and records.
374
+ */
375
+ export declare function verifyDomain(domainId: string, transport?: Transport, baseUrl?: string): Promise<void>;
376
+ /** Fetch a domain's full status and DNS records by id. */
377
+ export declare function getDomain(domainId: string, transport?: Transport, baseUrl?: string): Promise<Domain>;
378
+ /** List registered domains (without per-domain status/records). */
379
+ export declare function listDomains(transport?: Transport, baseUrl?: string): Promise<DomainList>;
380
+ /** Delete a registered domain by id. */
381
+ declare function deleteDomain(domainId: string, transport?: Transport, baseUrl?: string): Promise<void>;
382
+ export { deleteDomain };
383
+ /**
384
+ * Register a webhook for inbound events. The returned `secret` is shown only once —
385
+ * store it to verify delivered event signatures.
386
+ */
387
+ export declare function createWebhook(input: CreateWebhookInput, transport?: Transport, baseUrl?: string): Promise<Webhook>;
388
+ /** Delete a webhook by id. */
389
+ declare function deleteWebhook(id: number, transport?: Transport, baseUrl?: string): Promise<void>;
390
+ export { deleteWebhook };
391
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/email/index.ts"],"names":[],"mappings":"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"}