@sendfn/admin 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.
- package/dist/adapter.d.ts +7 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +31 -0
- package/dist/adapter.js.map +1 -0
- package/dist/capability.d.ts +1558 -0
- package/dist/capability.d.ts.map +1 -0
- package/dist/capability.js +514 -0
- package/dist/capability.js.map +1 -0
- package/dist/client.d.ts +796 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +38 -0
- package/dist/client.js.map +1 -0
- package/dist/domain-service.d.ts +9 -0
- package/dist/domain-service.d.ts.map +1 -0
- package/dist/domain-service.js +231 -0
- package/dist/domain-service.js.map +1 -0
- package/dist/index.d.ts +773 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +156 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +45 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,773 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
export * from "./capability.js";
|
|
3
|
+
export * from "./adapter.js";
|
|
4
|
+
export * from "./client.js";
|
|
5
|
+
export * from "./domain-service.js";
|
|
6
|
+
import type { AdminCapabilityAdapter } from "@superfunctions/admin";
|
|
7
|
+
import { sendFnAdminCapability } from "./capability.js";
|
|
8
|
+
import type { SendFnDomainAdminServiceOptions } from "./types.js";
|
|
9
|
+
/** Creates a complete adapter directly from a project-owned public SendFn client. */
|
|
10
|
+
export declare function createSendFnDomainAdminAdapter(options: SendFnDomainAdminServiceOptions): AdminCapabilityAdapter<typeof sendFnAdminCapability>;
|
|
11
|
+
export declare const adminCapability: {
|
|
12
|
+
readonly schemaVersion: "1.0";
|
|
13
|
+
readonly id: "sendfn";
|
|
14
|
+
readonly displayName: "SendFn";
|
|
15
|
+
readonly version: "1.0.0";
|
|
16
|
+
readonly description: "Project-scoped operator capabilities backed by the public SendFn client.";
|
|
17
|
+
readonly category: "communication";
|
|
18
|
+
readonly availability: "required-product";
|
|
19
|
+
readonly scopeLevels: readonly ["installation", "workspace", "project", "environment"];
|
|
20
|
+
readonly dependencies: readonly [];
|
|
21
|
+
readonly resources: readonly [{
|
|
22
|
+
readonly id: "templates";
|
|
23
|
+
readonly label: "Templates";
|
|
24
|
+
readonly description: "Inspect and register SendFn email templates.";
|
|
25
|
+
readonly icon: "sendfn:templates";
|
|
26
|
+
readonly risk: "standard";
|
|
27
|
+
readonly minimumScope: "project";
|
|
28
|
+
readonly idField: "id";
|
|
29
|
+
readonly displayFields: readonly ["id", "name", "subject"];
|
|
30
|
+
readonly searchableFields: readonly ["id", "name", "subject"];
|
|
31
|
+
readonly filterableFields: readonly [];
|
|
32
|
+
readonly sortableFields: readonly ["id", "name"];
|
|
33
|
+
readonly sensitiveFields: readonly [];
|
|
34
|
+
}, {
|
|
35
|
+
readonly id: "messages";
|
|
36
|
+
readonly label: "Messages";
|
|
37
|
+
readonly description: "Send email, SMS, WhatsApp, and push communications through configured SendFn providers.";
|
|
38
|
+
readonly icon: "sendfn:messages";
|
|
39
|
+
readonly risk: "sensitive";
|
|
40
|
+
readonly minimumScope: "project";
|
|
41
|
+
readonly idField: "id";
|
|
42
|
+
readonly displayFields: readonly ["id", "provider", "status", "createdAt"];
|
|
43
|
+
readonly searchableFields: readonly ["id", "userId", "providerMessageId"];
|
|
44
|
+
readonly filterableFields: readonly ["status", "provider"];
|
|
45
|
+
readonly sortableFields: readonly ["createdAt", "updatedAt"];
|
|
46
|
+
readonly sensitiveFields: readonly ["to", "message", "body", "html", "text", "deviceTokens"];
|
|
47
|
+
}, {
|
|
48
|
+
readonly id: "deliveries";
|
|
49
|
+
readonly label: "Delivery Events";
|
|
50
|
+
readonly description: "Query persisted SendFn delivery and engagement events.";
|
|
51
|
+
readonly icon: "sendfn:deliveries";
|
|
52
|
+
readonly risk: "sensitive";
|
|
53
|
+
readonly minimumScope: "project";
|
|
54
|
+
readonly idField: "id";
|
|
55
|
+
readonly displayFields: readonly ["id", "referenceType", "eventType", "provider", "eventTimestamp"];
|
|
56
|
+
readonly searchableFields: readonly ["id", "referenceId", "providerMessageId", "userId"];
|
|
57
|
+
readonly filterableFields: readonly ["referenceType", "eventType", "provider", "startAt", "endAt"];
|
|
58
|
+
readonly sortableFields: readonly ["eventTimestamp"];
|
|
59
|
+
readonly sensitiveFields: readonly ["recipientEmail", "recipientPhone", "deviceToken"];
|
|
60
|
+
}, {
|
|
61
|
+
readonly id: "suppressions";
|
|
62
|
+
readonly label: "Suppressions";
|
|
63
|
+
readonly description: "Inspect and manage SendFn email suppressions and unsubscribes.";
|
|
64
|
+
readonly icon: "sendfn:suppressions";
|
|
65
|
+
readonly risk: "sensitive";
|
|
66
|
+
readonly minimumScope: "project";
|
|
67
|
+
readonly idField: "email";
|
|
68
|
+
readonly displayFields: readonly ["email", "reason", "source", "suppressedAt"];
|
|
69
|
+
readonly searchableFields: readonly ["email", "source"];
|
|
70
|
+
readonly filterableFields: readonly ["reason", "source"];
|
|
71
|
+
readonly sortableFields: readonly ["email", "suppressedAt"];
|
|
72
|
+
readonly sensitiveFields: readonly [];
|
|
73
|
+
}, {
|
|
74
|
+
readonly id: "device-tokens";
|
|
75
|
+
readonly label: "Device Tokens";
|
|
76
|
+
readonly description: "Inspect and manage SendFn push-notification device registrations.";
|
|
77
|
+
readonly icon: "sendfn:device-tokens";
|
|
78
|
+
readonly risk: "sensitive";
|
|
79
|
+
readonly minimumScope: "project";
|
|
80
|
+
readonly idField: "id";
|
|
81
|
+
readonly displayFields: readonly ["id", "userId", "platform", "isActive", "lastUsedAt"];
|
|
82
|
+
readonly searchableFields: readonly ["id", "userId"];
|
|
83
|
+
readonly filterableFields: readonly ["platform", "isActive"];
|
|
84
|
+
readonly sortableFields: readonly ["lastUsedAt", "updatedAt"];
|
|
85
|
+
readonly sensitiveFields: readonly ["token"];
|
|
86
|
+
}];
|
|
87
|
+
readonly navigation: readonly [{
|
|
88
|
+
readonly id: "sendfn";
|
|
89
|
+
readonly label: "SendFn";
|
|
90
|
+
readonly path: "/modules/sendfn";
|
|
91
|
+
readonly icon: "sendfn";
|
|
92
|
+
readonly description: "Operate project-owned communications.";
|
|
93
|
+
readonly order: 100;
|
|
94
|
+
}];
|
|
95
|
+
readonly operations: readonly [{
|
|
96
|
+
readonly id: "sendfn.templates.list";
|
|
97
|
+
readonly title: "List templates";
|
|
98
|
+
readonly description: "List templates registered in the project-owned SendFn client.";
|
|
99
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
100
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
101
|
+
readonly route: {
|
|
102
|
+
readonly method: "GET";
|
|
103
|
+
readonly path: "/resources/templates";
|
|
104
|
+
};
|
|
105
|
+
readonly permission: "sendfn.templates.read";
|
|
106
|
+
readonly minimumScope: "project";
|
|
107
|
+
readonly safety: {
|
|
108
|
+
readonly classification: "read";
|
|
109
|
+
readonly idempotent: true;
|
|
110
|
+
readonly requiresConfirmation: false;
|
|
111
|
+
readonly audit: "optional";
|
|
112
|
+
};
|
|
113
|
+
readonly mcp: {
|
|
114
|
+
readonly readOnlyHint: true;
|
|
115
|
+
readonly destructiveHint: false;
|
|
116
|
+
readonly idempotentHint: true;
|
|
117
|
+
};
|
|
118
|
+
readonly target: {
|
|
119
|
+
readonly resource: "templates";
|
|
120
|
+
readonly collection: true;
|
|
121
|
+
};
|
|
122
|
+
}, {
|
|
123
|
+
readonly id: "sendfn.templates.get";
|
|
124
|
+
readonly title: "Get template";
|
|
125
|
+
readonly description: "Get one template from the project-owned SendFn registry.";
|
|
126
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
127
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
128
|
+
readonly route: {
|
|
129
|
+
readonly method: "GET";
|
|
130
|
+
readonly path: "/resources/templates/:id";
|
|
131
|
+
};
|
|
132
|
+
readonly permission: "sendfn.templates.read";
|
|
133
|
+
readonly minimumScope: "project";
|
|
134
|
+
readonly safety: {
|
|
135
|
+
readonly classification: "read";
|
|
136
|
+
readonly idempotent: true;
|
|
137
|
+
readonly requiresConfirmation: false;
|
|
138
|
+
readonly audit: "optional";
|
|
139
|
+
};
|
|
140
|
+
readonly mcp: {
|
|
141
|
+
readonly readOnlyHint: true;
|
|
142
|
+
readonly destructiveHint: false;
|
|
143
|
+
readonly idempotentHint: true;
|
|
144
|
+
};
|
|
145
|
+
readonly target: {
|
|
146
|
+
readonly resource: "templates";
|
|
147
|
+
readonly idInput: "id";
|
|
148
|
+
};
|
|
149
|
+
}, {
|
|
150
|
+
readonly id: "sendfn.templates.register";
|
|
151
|
+
readonly title: "Register template";
|
|
152
|
+
readonly description: "Register or replace a SendFn template in the project-owned registry.";
|
|
153
|
+
readonly inputSchema: {
|
|
154
|
+
readonly type: "object";
|
|
155
|
+
readonly properties: {
|
|
156
|
+
readonly template: import("@superfunctions/admin").AdminObjectSchema;
|
|
157
|
+
};
|
|
158
|
+
readonly required: readonly ["template"];
|
|
159
|
+
readonly additionalProperties: false;
|
|
160
|
+
};
|
|
161
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
162
|
+
readonly route: {
|
|
163
|
+
readonly method: "POST";
|
|
164
|
+
readonly path: "/resources/templates/actions/register";
|
|
165
|
+
};
|
|
166
|
+
readonly permission: "sendfn.templates.write";
|
|
167
|
+
readonly minimumScope: "project";
|
|
168
|
+
readonly safety: {
|
|
169
|
+
readonly classification: "write";
|
|
170
|
+
readonly idempotent: true;
|
|
171
|
+
readonly requiresConfirmation: false;
|
|
172
|
+
readonly audit: "required";
|
|
173
|
+
};
|
|
174
|
+
readonly redaction: {
|
|
175
|
+
readonly inputFields: readonly ["html", "text", "metadata"];
|
|
176
|
+
};
|
|
177
|
+
readonly mcp: {
|
|
178
|
+
readonly readOnlyHint: false;
|
|
179
|
+
readonly destructiveHint: false;
|
|
180
|
+
readonly idempotentHint: true;
|
|
181
|
+
};
|
|
182
|
+
readonly target: {
|
|
183
|
+
readonly resource: "templates";
|
|
184
|
+
readonly collection: true;
|
|
185
|
+
};
|
|
186
|
+
}, {
|
|
187
|
+
readonly id: "sendfn.deliveries.list";
|
|
188
|
+
readonly title: "List delivery events";
|
|
189
|
+
readonly description: "Query delivery and engagement events through SendFn's public event API.";
|
|
190
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
191
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
192
|
+
readonly route: {
|
|
193
|
+
readonly method: "GET";
|
|
194
|
+
readonly path: "/resources/deliveries";
|
|
195
|
+
};
|
|
196
|
+
readonly permission: "sendfn.deliveries.read";
|
|
197
|
+
readonly minimumScope: "project";
|
|
198
|
+
readonly safety: {
|
|
199
|
+
readonly classification: "read";
|
|
200
|
+
readonly idempotent: true;
|
|
201
|
+
readonly requiresConfirmation: false;
|
|
202
|
+
readonly audit: "required";
|
|
203
|
+
};
|
|
204
|
+
readonly mcp: {
|
|
205
|
+
readonly readOnlyHint: true;
|
|
206
|
+
readonly destructiveHint: false;
|
|
207
|
+
readonly idempotentHint: true;
|
|
208
|
+
};
|
|
209
|
+
readonly target: {
|
|
210
|
+
readonly resource: "deliveries";
|
|
211
|
+
readonly collection: true;
|
|
212
|
+
};
|
|
213
|
+
}, {
|
|
214
|
+
readonly id: "sendfn.messages.send-email";
|
|
215
|
+
readonly title: "Send email";
|
|
216
|
+
readonly description: "Send one email through the configured SendFn email provider.";
|
|
217
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
218
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
219
|
+
readonly route: {
|
|
220
|
+
readonly method: "POST";
|
|
221
|
+
readonly path: "/resources/messages/actions/send-email";
|
|
222
|
+
};
|
|
223
|
+
readonly permission: "sendfn.messages.send";
|
|
224
|
+
readonly minimumScope: "project";
|
|
225
|
+
readonly safety: {
|
|
226
|
+
readonly classification: "write";
|
|
227
|
+
readonly idempotent: true;
|
|
228
|
+
readonly requiresConfirmation: true;
|
|
229
|
+
readonly confirmation: {
|
|
230
|
+
readonly risk: "high";
|
|
231
|
+
readonly method: "explicit";
|
|
232
|
+
readonly reason: "Email delivery contacts an external recipient.";
|
|
233
|
+
readonly maxAgeSeconds: 300;
|
|
234
|
+
};
|
|
235
|
+
readonly audit: "required";
|
|
236
|
+
};
|
|
237
|
+
readonly redaction: {
|
|
238
|
+
readonly inputFields: readonly ["to", "cc", "bcc", "html", "text", "attachments", "templateData", "headers", "metadata"];
|
|
239
|
+
};
|
|
240
|
+
readonly mcp: {
|
|
241
|
+
readonly readOnlyHint: false;
|
|
242
|
+
readonly destructiveHint: false;
|
|
243
|
+
readonly idempotentHint: true;
|
|
244
|
+
};
|
|
245
|
+
readonly target: {
|
|
246
|
+
readonly resource: "messages";
|
|
247
|
+
readonly collection: true;
|
|
248
|
+
};
|
|
249
|
+
}, {
|
|
250
|
+
readonly id: "sendfn.messages.send-email-bulk";
|
|
251
|
+
readonly title: "Send bulk email";
|
|
252
|
+
readonly description: "Send an explicitly confirmed collection of emails through SendFn.";
|
|
253
|
+
readonly inputSchema: {
|
|
254
|
+
readonly type: "object";
|
|
255
|
+
readonly properties: {
|
|
256
|
+
readonly messages: {
|
|
257
|
+
readonly type: "array";
|
|
258
|
+
readonly items: import("@superfunctions/admin").AdminObjectSchema;
|
|
259
|
+
readonly minItems: 1;
|
|
260
|
+
readonly maxItems: 1000;
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
readonly required: readonly ["messages"];
|
|
264
|
+
readonly additionalProperties: false;
|
|
265
|
+
};
|
|
266
|
+
readonly outputSchema: {
|
|
267
|
+
readonly type: "object";
|
|
268
|
+
readonly properties: {
|
|
269
|
+
readonly items: {
|
|
270
|
+
readonly type: "array";
|
|
271
|
+
readonly items: import("@superfunctions/admin").AdminObjectSchema;
|
|
272
|
+
};
|
|
273
|
+
};
|
|
274
|
+
readonly required: readonly ["items"];
|
|
275
|
+
readonly additionalProperties: false;
|
|
276
|
+
};
|
|
277
|
+
readonly route: {
|
|
278
|
+
readonly method: "POST";
|
|
279
|
+
readonly path: "/resources/messages/actions/send-email-bulk";
|
|
280
|
+
};
|
|
281
|
+
readonly permission: "sendfn.messages.send-bulk";
|
|
282
|
+
readonly minimumScope: "project";
|
|
283
|
+
readonly safety: {
|
|
284
|
+
readonly classification: "write";
|
|
285
|
+
readonly idempotent: true;
|
|
286
|
+
readonly requiresConfirmation: true;
|
|
287
|
+
readonly confirmation: {
|
|
288
|
+
readonly risk: "high";
|
|
289
|
+
readonly method: "mfa";
|
|
290
|
+
readonly reason: "Bulk email can contact many external recipients.";
|
|
291
|
+
readonly maxAgeSeconds: 300;
|
|
292
|
+
};
|
|
293
|
+
readonly audit: "required";
|
|
294
|
+
};
|
|
295
|
+
readonly redaction: {
|
|
296
|
+
readonly inputFields: readonly ["to", "cc", "bcc", "html", "text", "attachments", "templateData", "headers", "metadata"];
|
|
297
|
+
};
|
|
298
|
+
readonly mcp: {
|
|
299
|
+
readonly readOnlyHint: false;
|
|
300
|
+
readonly destructiveHint: false;
|
|
301
|
+
readonly idempotentHint: true;
|
|
302
|
+
};
|
|
303
|
+
readonly target: {
|
|
304
|
+
readonly resource: "messages";
|
|
305
|
+
readonly collection: true;
|
|
306
|
+
};
|
|
307
|
+
}, {
|
|
308
|
+
readonly id: "sendfn.messages.send-sms";
|
|
309
|
+
readonly title: "Send SMS";
|
|
310
|
+
readonly description: "Send one SMS through the configured SendFn SMS provider.";
|
|
311
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
312
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
313
|
+
readonly route: {
|
|
314
|
+
readonly method: "POST";
|
|
315
|
+
readonly path: "/resources/messages/actions/send-sms";
|
|
316
|
+
};
|
|
317
|
+
readonly permission: "sendfn.messages.send";
|
|
318
|
+
readonly minimumScope: "project";
|
|
319
|
+
readonly safety: {
|
|
320
|
+
readonly classification: "write";
|
|
321
|
+
readonly idempotent: false;
|
|
322
|
+
readonly requiresConfirmation: true;
|
|
323
|
+
readonly confirmation: {
|
|
324
|
+
readonly risk: "high";
|
|
325
|
+
readonly method: "explicit";
|
|
326
|
+
readonly reason: "SMS delivery contacts an external recipient.";
|
|
327
|
+
readonly maxAgeSeconds: 300;
|
|
328
|
+
};
|
|
329
|
+
readonly audit: "required";
|
|
330
|
+
};
|
|
331
|
+
readonly redaction: {
|
|
332
|
+
readonly inputFields: readonly ["to", "message", "metadata"];
|
|
333
|
+
};
|
|
334
|
+
readonly mcp: {
|
|
335
|
+
readonly readOnlyHint: false;
|
|
336
|
+
readonly destructiveHint: false;
|
|
337
|
+
readonly idempotentHint: false;
|
|
338
|
+
};
|
|
339
|
+
readonly target: {
|
|
340
|
+
readonly resource: "messages";
|
|
341
|
+
readonly collection: true;
|
|
342
|
+
};
|
|
343
|
+
}, {
|
|
344
|
+
readonly id: "sendfn.messages.send-whatsapp";
|
|
345
|
+
readonly title: "Send WhatsApp message";
|
|
346
|
+
readonly description: "Send one WhatsApp message through the configured SendFn provider.";
|
|
347
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
348
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
349
|
+
readonly route: {
|
|
350
|
+
readonly method: "POST";
|
|
351
|
+
readonly path: "/resources/messages/actions/send-whatsapp";
|
|
352
|
+
};
|
|
353
|
+
readonly permission: "sendfn.messages.send";
|
|
354
|
+
readonly minimumScope: "project";
|
|
355
|
+
readonly safety: {
|
|
356
|
+
readonly classification: "write";
|
|
357
|
+
readonly idempotent: false;
|
|
358
|
+
readonly requiresConfirmation: true;
|
|
359
|
+
readonly confirmation: {
|
|
360
|
+
readonly risk: "high";
|
|
361
|
+
readonly method: "explicit";
|
|
362
|
+
readonly reason: "WhatsApp delivery contacts an external recipient.";
|
|
363
|
+
readonly maxAgeSeconds: 300;
|
|
364
|
+
};
|
|
365
|
+
readonly audit: "required";
|
|
366
|
+
};
|
|
367
|
+
readonly redaction: {
|
|
368
|
+
readonly inputFields: readonly ["to", "message", "metadata"];
|
|
369
|
+
};
|
|
370
|
+
readonly mcp: {
|
|
371
|
+
readonly readOnlyHint: false;
|
|
372
|
+
readonly destructiveHint: false;
|
|
373
|
+
readonly idempotentHint: false;
|
|
374
|
+
};
|
|
375
|
+
readonly target: {
|
|
376
|
+
readonly resource: "messages";
|
|
377
|
+
readonly collection: true;
|
|
378
|
+
};
|
|
379
|
+
}, {
|
|
380
|
+
readonly id: "sendfn.messages.send-push";
|
|
381
|
+
readonly title: "Send push notification";
|
|
382
|
+
readonly description: "Send one push notification through configured SendFn platform providers.";
|
|
383
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
384
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
385
|
+
readonly route: {
|
|
386
|
+
readonly method: "POST";
|
|
387
|
+
readonly path: "/resources/messages/actions/send-push";
|
|
388
|
+
};
|
|
389
|
+
readonly permission: "sendfn.messages.send";
|
|
390
|
+
readonly minimumScope: "project";
|
|
391
|
+
readonly safety: {
|
|
392
|
+
readonly classification: "write";
|
|
393
|
+
readonly idempotent: false;
|
|
394
|
+
readonly requiresConfirmation: true;
|
|
395
|
+
readonly confirmation: {
|
|
396
|
+
readonly risk: "high";
|
|
397
|
+
readonly method: "explicit";
|
|
398
|
+
readonly reason: "Push delivery notifies an external user device.";
|
|
399
|
+
readonly maxAgeSeconds: 300;
|
|
400
|
+
};
|
|
401
|
+
readonly audit: "required";
|
|
402
|
+
};
|
|
403
|
+
readonly redaction: {
|
|
404
|
+
readonly inputFields: readonly ["userId", "body", "data", "metadata"];
|
|
405
|
+
readonly outputFields: readonly ["deviceTokens"];
|
|
406
|
+
};
|
|
407
|
+
readonly mcp: {
|
|
408
|
+
readonly readOnlyHint: false;
|
|
409
|
+
readonly destructiveHint: false;
|
|
410
|
+
readonly idempotentHint: false;
|
|
411
|
+
};
|
|
412
|
+
readonly target: {
|
|
413
|
+
readonly resource: "messages";
|
|
414
|
+
readonly collection: true;
|
|
415
|
+
};
|
|
416
|
+
}, {
|
|
417
|
+
readonly id: "sendfn.messages.send-push-bulk";
|
|
418
|
+
readonly title: "Send bulk push notifications";
|
|
419
|
+
readonly description: "Send an explicitly confirmed collection of push notifications through SendFn.";
|
|
420
|
+
readonly inputSchema: {
|
|
421
|
+
readonly type: "object";
|
|
422
|
+
readonly properties: {
|
|
423
|
+
readonly messages: {
|
|
424
|
+
readonly type: "array";
|
|
425
|
+
readonly items: import("@superfunctions/admin").AdminObjectSchema;
|
|
426
|
+
readonly minItems: 1;
|
|
427
|
+
readonly maxItems: 1000;
|
|
428
|
+
};
|
|
429
|
+
};
|
|
430
|
+
readonly required: readonly ["messages"];
|
|
431
|
+
readonly additionalProperties: false;
|
|
432
|
+
};
|
|
433
|
+
readonly outputSchema: {
|
|
434
|
+
readonly type: "object";
|
|
435
|
+
readonly properties: {
|
|
436
|
+
readonly items: {
|
|
437
|
+
readonly type: "array";
|
|
438
|
+
readonly items: import("@superfunctions/admin").AdminObjectSchema;
|
|
439
|
+
};
|
|
440
|
+
};
|
|
441
|
+
readonly required: readonly ["items"];
|
|
442
|
+
readonly additionalProperties: false;
|
|
443
|
+
};
|
|
444
|
+
readonly route: {
|
|
445
|
+
readonly method: "POST";
|
|
446
|
+
readonly path: "/resources/messages/actions/send-push-bulk";
|
|
447
|
+
};
|
|
448
|
+
readonly permission: "sendfn.messages.send-bulk";
|
|
449
|
+
readonly minimumScope: "project";
|
|
450
|
+
readonly safety: {
|
|
451
|
+
readonly classification: "write";
|
|
452
|
+
readonly idempotent: false;
|
|
453
|
+
readonly requiresConfirmation: true;
|
|
454
|
+
readonly confirmation: {
|
|
455
|
+
readonly risk: "high";
|
|
456
|
+
readonly method: "mfa";
|
|
457
|
+
readonly reason: "Bulk push can notify many users.";
|
|
458
|
+
readonly maxAgeSeconds: 300;
|
|
459
|
+
};
|
|
460
|
+
readonly audit: "required";
|
|
461
|
+
};
|
|
462
|
+
readonly redaction: {
|
|
463
|
+
readonly inputFields: readonly ["userId", "body", "data", "metadata"];
|
|
464
|
+
readonly outputFields: readonly ["deviceTokens"];
|
|
465
|
+
};
|
|
466
|
+
readonly mcp: {
|
|
467
|
+
readonly readOnlyHint: false;
|
|
468
|
+
readonly destructiveHint: false;
|
|
469
|
+
readonly idempotentHint: false;
|
|
470
|
+
};
|
|
471
|
+
readonly target: {
|
|
472
|
+
readonly resource: "messages";
|
|
473
|
+
readonly collection: true;
|
|
474
|
+
};
|
|
475
|
+
}, {
|
|
476
|
+
readonly id: "sendfn.suppressions.list";
|
|
477
|
+
readonly title: "List suppressions";
|
|
478
|
+
readonly description: "List suppressions through SendFn's public export API.";
|
|
479
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
480
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
481
|
+
readonly route: {
|
|
482
|
+
readonly method: "GET";
|
|
483
|
+
readonly path: "/resources/suppressions";
|
|
484
|
+
};
|
|
485
|
+
readonly permission: "sendfn.suppressions.read";
|
|
486
|
+
readonly minimumScope: "project";
|
|
487
|
+
readonly safety: {
|
|
488
|
+
readonly classification: "read";
|
|
489
|
+
readonly idempotent: true;
|
|
490
|
+
readonly requiresConfirmation: false;
|
|
491
|
+
readonly audit: "required";
|
|
492
|
+
};
|
|
493
|
+
readonly mcp: {
|
|
494
|
+
readonly readOnlyHint: true;
|
|
495
|
+
readonly destructiveHint: false;
|
|
496
|
+
readonly idempotentHint: true;
|
|
497
|
+
};
|
|
498
|
+
readonly target: {
|
|
499
|
+
readonly resource: "suppressions";
|
|
500
|
+
readonly collection: true;
|
|
501
|
+
};
|
|
502
|
+
}, {
|
|
503
|
+
readonly id: "sendfn.suppressions.get";
|
|
504
|
+
readonly title: "Check suppression";
|
|
505
|
+
readonly description: "Check whether one email address is suppressed in SendFn.";
|
|
506
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
507
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
508
|
+
readonly route: {
|
|
509
|
+
readonly method: "GET";
|
|
510
|
+
readonly path: "/resources/suppressions/:email";
|
|
511
|
+
};
|
|
512
|
+
readonly permission: "sendfn.suppressions.read";
|
|
513
|
+
readonly minimumScope: "project";
|
|
514
|
+
readonly safety: {
|
|
515
|
+
readonly classification: "read";
|
|
516
|
+
readonly idempotent: true;
|
|
517
|
+
readonly requiresConfirmation: false;
|
|
518
|
+
readonly audit: "required";
|
|
519
|
+
};
|
|
520
|
+
readonly redaction: {
|
|
521
|
+
readonly inputFields: readonly ["email"];
|
|
522
|
+
};
|
|
523
|
+
readonly mcp: {
|
|
524
|
+
readonly readOnlyHint: true;
|
|
525
|
+
readonly destructiveHint: false;
|
|
526
|
+
readonly idempotentHint: true;
|
|
527
|
+
};
|
|
528
|
+
readonly target: {
|
|
529
|
+
readonly resource: "suppressions";
|
|
530
|
+
readonly idInput: "email";
|
|
531
|
+
};
|
|
532
|
+
}, {
|
|
533
|
+
readonly id: "sendfn.suppressions.add";
|
|
534
|
+
readonly title: "Add suppression";
|
|
535
|
+
readonly description: "Add an email address to SendFn's suppression list.";
|
|
536
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
537
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
538
|
+
readonly route: {
|
|
539
|
+
readonly method: "POST";
|
|
540
|
+
readonly path: "/resources/suppressions/actions/add";
|
|
541
|
+
};
|
|
542
|
+
readonly permission: "sendfn.suppressions.write";
|
|
543
|
+
readonly minimumScope: "project";
|
|
544
|
+
readonly safety: {
|
|
545
|
+
readonly classification: "write";
|
|
546
|
+
readonly idempotent: true;
|
|
547
|
+
readonly requiresConfirmation: false;
|
|
548
|
+
readonly audit: "required";
|
|
549
|
+
};
|
|
550
|
+
readonly redaction: {
|
|
551
|
+
readonly inputFields: readonly ["email", "metadata"];
|
|
552
|
+
};
|
|
553
|
+
readonly mcp: {
|
|
554
|
+
readonly readOnlyHint: false;
|
|
555
|
+
readonly destructiveHint: false;
|
|
556
|
+
readonly idempotentHint: true;
|
|
557
|
+
};
|
|
558
|
+
readonly target: {
|
|
559
|
+
readonly resource: "suppressions";
|
|
560
|
+
readonly idInput: "email";
|
|
561
|
+
};
|
|
562
|
+
}, {
|
|
563
|
+
readonly id: "sendfn.suppressions.remove";
|
|
564
|
+
readonly title: "Remove suppression";
|
|
565
|
+
readonly description: "Remove one suppression after recent-auth confirmation, allowing future delivery.";
|
|
566
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
567
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
568
|
+
readonly route: {
|
|
569
|
+
readonly method: "POST";
|
|
570
|
+
readonly path: "/resources/suppressions/actions/remove";
|
|
571
|
+
};
|
|
572
|
+
readonly permission: "sendfn.suppressions.remove";
|
|
573
|
+
readonly minimumScope: "project";
|
|
574
|
+
readonly safety: {
|
|
575
|
+
readonly classification: "destructive";
|
|
576
|
+
readonly idempotent: true;
|
|
577
|
+
readonly requiresConfirmation: true;
|
|
578
|
+
readonly confirmation: {
|
|
579
|
+
readonly risk: "high";
|
|
580
|
+
readonly method: "recent-auth";
|
|
581
|
+
readonly reason: "Removing a suppression allows future contact to the address.";
|
|
582
|
+
readonly maxAgeSeconds: 300;
|
|
583
|
+
};
|
|
584
|
+
readonly audit: "required";
|
|
585
|
+
};
|
|
586
|
+
readonly redaction: {
|
|
587
|
+
readonly inputFields: readonly ["email"];
|
|
588
|
+
};
|
|
589
|
+
readonly mcp: {
|
|
590
|
+
readonly readOnlyHint: false;
|
|
591
|
+
readonly destructiveHint: true;
|
|
592
|
+
readonly idempotentHint: true;
|
|
593
|
+
};
|
|
594
|
+
readonly target: {
|
|
595
|
+
readonly resource: "suppressions";
|
|
596
|
+
readonly idInput: "email";
|
|
597
|
+
};
|
|
598
|
+
}, {
|
|
599
|
+
readonly id: "sendfn.device-tokens.list";
|
|
600
|
+
readonly title: "List device tokens";
|
|
601
|
+
readonly description: "List active device registrations for one SendFn user.";
|
|
602
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
603
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
604
|
+
readonly route: {
|
|
605
|
+
readonly method: "GET";
|
|
606
|
+
readonly path: "/resources/device-tokens";
|
|
607
|
+
};
|
|
608
|
+
readonly permission: "sendfn.device-tokens.read";
|
|
609
|
+
readonly minimumScope: "project";
|
|
610
|
+
readonly safety: {
|
|
611
|
+
readonly classification: "read";
|
|
612
|
+
readonly idempotent: true;
|
|
613
|
+
readonly requiresConfirmation: false;
|
|
614
|
+
readonly audit: "required";
|
|
615
|
+
};
|
|
616
|
+
readonly redaction: {
|
|
617
|
+
readonly outputFields: readonly ["token"];
|
|
618
|
+
};
|
|
619
|
+
readonly mcp: {
|
|
620
|
+
readonly readOnlyHint: true;
|
|
621
|
+
readonly destructiveHint: false;
|
|
622
|
+
readonly idempotentHint: true;
|
|
623
|
+
};
|
|
624
|
+
readonly target: {
|
|
625
|
+
readonly resource: "device-tokens";
|
|
626
|
+
readonly collection: true;
|
|
627
|
+
};
|
|
628
|
+
}, {
|
|
629
|
+
readonly id: "sendfn.device-tokens.register";
|
|
630
|
+
readonly title: "Register device token";
|
|
631
|
+
readonly description: "Register or reactivate a SendFn device token.";
|
|
632
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
633
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
634
|
+
readonly route: {
|
|
635
|
+
readonly method: "POST";
|
|
636
|
+
readonly path: "/resources/device-tokens/actions/register";
|
|
637
|
+
};
|
|
638
|
+
readonly permission: "sendfn.device-tokens.write";
|
|
639
|
+
readonly minimumScope: "project";
|
|
640
|
+
readonly safety: {
|
|
641
|
+
readonly classification: "write";
|
|
642
|
+
readonly idempotent: true;
|
|
643
|
+
readonly requiresConfirmation: true;
|
|
644
|
+
readonly confirmation: {
|
|
645
|
+
readonly risk: "high";
|
|
646
|
+
readonly method: "recent-auth";
|
|
647
|
+
readonly reason: "Registering a device credential authorizes future external push delivery.";
|
|
648
|
+
readonly maxAgeSeconds: 300;
|
|
649
|
+
};
|
|
650
|
+
readonly audit: "required";
|
|
651
|
+
};
|
|
652
|
+
readonly redaction: {
|
|
653
|
+
readonly inputFields: readonly ["token", "deviceInfo"];
|
|
654
|
+
readonly outputFields: readonly ["token"];
|
|
655
|
+
};
|
|
656
|
+
readonly mcp: {
|
|
657
|
+
readonly readOnlyHint: false;
|
|
658
|
+
readonly destructiveHint: false;
|
|
659
|
+
readonly idempotentHint: true;
|
|
660
|
+
};
|
|
661
|
+
readonly target: {
|
|
662
|
+
readonly resource: "device-tokens";
|
|
663
|
+
readonly idInput: "token";
|
|
664
|
+
};
|
|
665
|
+
}, {
|
|
666
|
+
readonly id: "sendfn.device-tokens.deactivate";
|
|
667
|
+
readonly title: "Deactivate device token";
|
|
668
|
+
readonly description: "Deactivate one device token after explicit confirmation.";
|
|
669
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
670
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
671
|
+
readonly route: {
|
|
672
|
+
readonly method: "POST";
|
|
673
|
+
readonly path: "/resources/device-tokens/actions/deactivate";
|
|
674
|
+
};
|
|
675
|
+
readonly permission: "sendfn.device-tokens.deactivate";
|
|
676
|
+
readonly minimumScope: "project";
|
|
677
|
+
readonly safety: {
|
|
678
|
+
readonly classification: "destructive";
|
|
679
|
+
readonly idempotent: true;
|
|
680
|
+
readonly requiresConfirmation: true;
|
|
681
|
+
readonly confirmation: {
|
|
682
|
+
readonly risk: "high";
|
|
683
|
+
readonly method: "recent-auth";
|
|
684
|
+
readonly reason: "Deactivation stops push delivery to the device.";
|
|
685
|
+
};
|
|
686
|
+
readonly audit: "required";
|
|
687
|
+
};
|
|
688
|
+
readonly redaction: {
|
|
689
|
+
readonly inputFields: readonly ["token"];
|
|
690
|
+
readonly outputFields: readonly ["deactivatedToken"];
|
|
691
|
+
};
|
|
692
|
+
readonly mcp: {
|
|
693
|
+
readonly readOnlyHint: false;
|
|
694
|
+
readonly destructiveHint: true;
|
|
695
|
+
readonly idempotentHint: true;
|
|
696
|
+
};
|
|
697
|
+
readonly target: {
|
|
698
|
+
readonly resource: "device-tokens";
|
|
699
|
+
readonly idInput: "token";
|
|
700
|
+
};
|
|
701
|
+
}, {
|
|
702
|
+
readonly id: "sendfn.device-tokens.refresh";
|
|
703
|
+
readonly title: "Refresh device token";
|
|
704
|
+
readonly description: "Replace an active SendFn device token with a new token.";
|
|
705
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
706
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
707
|
+
readonly route: {
|
|
708
|
+
readonly method: "POST";
|
|
709
|
+
readonly path: "/resources/device-tokens/actions/refresh";
|
|
710
|
+
};
|
|
711
|
+
readonly permission: "sendfn.device-tokens.write";
|
|
712
|
+
readonly minimumScope: "project";
|
|
713
|
+
readonly safety: {
|
|
714
|
+
readonly classification: "write";
|
|
715
|
+
readonly idempotent: false;
|
|
716
|
+
readonly requiresConfirmation: true;
|
|
717
|
+
readonly confirmation: {
|
|
718
|
+
readonly risk: "critical";
|
|
719
|
+
readonly method: "mfa";
|
|
720
|
+
readonly reason: "Refreshing replaces an active device delivery credential.";
|
|
721
|
+
readonly maxAgeSeconds: 300;
|
|
722
|
+
};
|
|
723
|
+
readonly audit: "required";
|
|
724
|
+
};
|
|
725
|
+
readonly redaction: {
|
|
726
|
+
readonly inputFields: readonly ["oldToken", "newToken"];
|
|
727
|
+
readonly outputFields: readonly ["token"];
|
|
728
|
+
};
|
|
729
|
+
readonly mcp: {
|
|
730
|
+
readonly readOnlyHint: false;
|
|
731
|
+
readonly destructiveHint: false;
|
|
732
|
+
readonly idempotentHint: false;
|
|
733
|
+
};
|
|
734
|
+
readonly target: {
|
|
735
|
+
readonly resource: "device-tokens";
|
|
736
|
+
readonly idInput: "oldToken";
|
|
737
|
+
};
|
|
738
|
+
}, {
|
|
739
|
+
readonly id: "sendfn.device-tokens.cleanup";
|
|
740
|
+
readonly title: "Clean up inactive devices";
|
|
741
|
+
readonly description: "Permanently remove inactive device tokens older than a confirmed cutoff.";
|
|
742
|
+
readonly inputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
743
|
+
readonly outputSchema: import("@superfunctions/admin").AdminObjectSchema;
|
|
744
|
+
readonly route: {
|
|
745
|
+
readonly method: "POST";
|
|
746
|
+
readonly path: "/resources/device-tokens/actions/cleanup";
|
|
747
|
+
};
|
|
748
|
+
readonly permission: "sendfn.device-tokens.cleanup";
|
|
749
|
+
readonly minimumScope: "project";
|
|
750
|
+
readonly safety: {
|
|
751
|
+
readonly classification: "destructive";
|
|
752
|
+
readonly idempotent: false;
|
|
753
|
+
readonly requiresConfirmation: true;
|
|
754
|
+
readonly confirmation: {
|
|
755
|
+
readonly risk: "high";
|
|
756
|
+
readonly method: "recent-auth";
|
|
757
|
+
readonly reason: "Cleanup permanently deletes inactive device registrations.";
|
|
758
|
+
readonly maxAgeSeconds: 300;
|
|
759
|
+
};
|
|
760
|
+
readonly audit: "required";
|
|
761
|
+
};
|
|
762
|
+
readonly mcp: {
|
|
763
|
+
readonly readOnlyHint: false;
|
|
764
|
+
readonly destructiveHint: true;
|
|
765
|
+
readonly idempotentHint: false;
|
|
766
|
+
};
|
|
767
|
+
readonly target: {
|
|
768
|
+
readonly resource: "device-tokens";
|
|
769
|
+
readonly idInput: "olderThan";
|
|
770
|
+
};
|
|
771
|
+
}];
|
|
772
|
+
};
|
|
773
|
+
//# sourceMappingURL=index.d.ts.map
|