samva 0.4.0 → 0.6.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/AGENTS.md +3 -2
- package/README.md +12 -2
- package/dist/{categories-CsUa8ojo.js → categories-4u9Az4No.js} +28 -8
- package/dist/client/sdk.gen.d.ts +545 -74
- package/dist/client/types.gen.d.ts +3907 -747
- package/dist/{client-BmZK_uCt.js → client-DCM6U0-I.js} +3061 -808
- package/dist/{client-attribution-BslSOa_8.js → client-attribution-DYUSAa76.js} +2 -2
- package/dist/effect/analytics.d.ts +66 -0
- package/dist/effect/analytics.js +21 -0
- package/dist/effect/api-keys.d.ts +198 -34
- package/dist/effect/api-keys.js +1 -1
- package/dist/effect/attachments.d.ts +53 -0
- package/dist/effect/attachments.js +17 -0
- package/dist/effect/campaigns.d.ts +52 -18
- package/dist/effect/campaigns.js +1 -1
- package/dist/effect/categories.d.ts +3 -3
- package/dist/effect/categories.js +1 -1
- package/dist/effect/client.js +1 -1
- package/dist/effect/contact-groups.d.ts +375 -0
- package/dist/effect/contact-groups.js +29 -0
- package/dist/effect/contacts.d.ts +35 -19
- package/dist/effect/contacts.js +1 -1
- package/dist/effect/conversations.d.ts +191 -44
- package/dist/effect/conversations.js +1 -1
- package/dist/effect/custom-fields.d.ts +111 -0
- package/dist/effect/custom-fields.js +17 -0
- package/dist/effect/design.d.ts +2 -2
- package/dist/effect/design.js +1 -1
- package/dist/effect/email.d.ts +931 -97
- package/dist/effect/email.js +27 -3
- package/dist/effect/generated-metadata.d.ts +16 -4
- package/dist/effect/generated.d.ts +19596 -10819
- package/dist/effect/index.d.ts +6 -1
- package/dist/effect/index.js +8 -3
- package/dist/effect/internal/operation.d.ts +124 -26
- package/dist/effect/media.d.ts +8 -8
- package/dist/effect/media.js +1 -1
- package/dist/effect/messages.d.ts +473 -64
- package/dist/effect/messages.js +5 -3
- package/dist/effect/operations.d.ts +6 -6
- package/dist/effect/operations.js +1 -1
- package/dist/effect/organizations.d.ts +7 -110
- package/dist/effect/organizations.js +2 -4
- package/dist/effect/retry.js +1 -1
- package/dist/effect/scheduled-messages.d.ts +96 -12
- package/dist/effect/scheduled-messages.js +5 -3
- package/dist/effect/templates.d.ts +35 -295
- package/dist/effect/templates.js +3 -5
- package/dist/effect/unsubscribe-groups.d.ts +161 -0
- package/dist/effect/unsubscribe-groups.js +25 -0
- package/dist/effect/webhooks.d.ts +52 -18
- package/dist/effect/webhooks.js +2 -2
- package/dist/index.js +2 -2
- package/dist/{normalize-BiIJnycv.js → normalize-B79uJIeb.js} +13 -14
- package/dist/normalize.d.ts +3 -7
- package/dist/{operation-B1knNlxk.js → operation-02YX3hY9.js} +144 -8
- package/dist/promises/errors.gen.d.ts +47 -39
- package/dist/promises/index.d.ts +19 -4
- package/dist/promises/index.js +2 -2
- package/dist/promises/types.gen.d.ts +1 -1
- package/dist/{promises-n1opem5V.js → promises-8MaPNAam.js} +1679 -267
- package/dist/service-map.d.ts +221 -8
- package/package.json +29 -9
package/dist/effect/templates.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { n as make } from "../operation-
|
|
3
|
-
import {
|
|
2
|
+
import { n as make } from "../operation-02YX3hY9.js";
|
|
3
|
+
import { C as UpdateTemplatePayload, s as CreateTemplatePayload } from "../client-DCM6U0-I.js";
|
|
4
4
|
//#region src/effect/templates.ts
|
|
5
5
|
var templates_exports = /* @__PURE__ */ __exportAll({
|
|
6
6
|
CreatePayload: () => CreateTemplatePayload,
|
|
@@ -21,7 +21,6 @@ var templates_exports = /* @__PURE__ */ __exportAll({
|
|
|
21
21
|
getPublication: () => getPublication,
|
|
22
22
|
issueGitCredential: () => issueGitCredential,
|
|
23
23
|
list: () => list,
|
|
24
|
-
listDashboard: () => listDashboard,
|
|
25
24
|
listFamilies: () => listFamilies,
|
|
26
25
|
listInputContracts: () => listInputContracts,
|
|
27
26
|
openWorkspace: () => openWorkspace,
|
|
@@ -40,7 +39,6 @@ var templates_exports = /* @__PURE__ */ __exportAll({
|
|
|
40
39
|
});
|
|
41
40
|
const list = make("templatesList");
|
|
42
41
|
const create = make("templatesCreate");
|
|
43
|
-
const listDashboard = make("templatesListDashboard");
|
|
44
42
|
const listFamilies = make("templatesListFamilies");
|
|
45
43
|
const createFamily = make("templatesCreateFamily");
|
|
46
44
|
const getFamily = make("templatesGetFamily");
|
|
@@ -71,6 +69,6 @@ const getInputContract = make("templatesGetInputContract");
|
|
|
71
69
|
const diffWorkspace = make("templatesDiffWorkspace");
|
|
72
70
|
const workspaceHistory = make("templatesWorkspaceHistory");
|
|
73
71
|
//#endregion
|
|
74
|
-
export { CreateTemplatePayload as CreatePayload, UpdateTemplatePayload as UpdatePayload, attachFamilyMember, attachWorkspaceResource, checkWorkspace, create, createFamily, createFamilyFromTemplate, deleteFamily, detachFamilyMember, diffWorkspace, getById, getFamily, getGitRepository, getInputContract, getPublication, issueGitCredential, list,
|
|
72
|
+
export { CreateTemplatePayload as CreatePayload, UpdateTemplatePayload as UpdatePayload, attachFamilyMember, attachWorkspaceResource, checkWorkspace, create, createFamily, createFamilyFromTemplate, deleteFamily, detachFamilyMember, diffWorkspace, getById, getFamily, getGitRepository, getInputContract, getPublication, issueGitCredential, list, listFamilies, listInputContracts, openWorkspace, patchWorkspace, publish, reconcileWorkspace, remove, removeWorkspaceResource, renameFamily, renderWorkspaceFixture, resolveWorkspaceConflict, restoreWorkspace, saveWorkspace, templates_exports as t, update, workspaceHistory };
|
|
75
73
|
|
|
76
74
|
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
export declare const list: ((input?: {
|
|
2
|
+
readonly page?: string | null | undefined;
|
|
3
|
+
readonly limit?: string | null | undefined;
|
|
4
|
+
} | undefined) => import("effect/Effect").Effect<{
|
|
5
|
+
readonly items: readonly {
|
|
6
|
+
readonly id: string & import("effect/Brand").Brand<"UnsubscribeId">;
|
|
7
|
+
readonly organizationId: string;
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly description: string | null;
|
|
10
|
+
readonly memberCount: number;
|
|
11
|
+
readonly createdAt: string;
|
|
12
|
+
readonly updatedAt: string;
|
|
13
|
+
}[];
|
|
14
|
+
readonly pagination: {
|
|
15
|
+
readonly page: number;
|
|
16
|
+
readonly limit: number;
|
|
17
|
+
readonly total: number;
|
|
18
|
+
readonly totalPages: number;
|
|
19
|
+
};
|
|
20
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>) & {
|
|
21
|
+
readonly pages: (input?: {
|
|
22
|
+
readonly page?: string | null | undefined;
|
|
23
|
+
readonly limit?: string | null | undefined;
|
|
24
|
+
} | undefined) => import("effect/Stream").Stream<{
|
|
25
|
+
readonly items: readonly {
|
|
26
|
+
readonly id: string & import("effect/Brand").Brand<"UnsubscribeId">;
|
|
27
|
+
readonly organizationId: string;
|
|
28
|
+
readonly name: string;
|
|
29
|
+
readonly description: string | null;
|
|
30
|
+
readonly memberCount: number;
|
|
31
|
+
readonly createdAt: string;
|
|
32
|
+
readonly updatedAt: string;
|
|
33
|
+
}[];
|
|
34
|
+
readonly pagination: {
|
|
35
|
+
readonly page: number;
|
|
36
|
+
readonly limit: number;
|
|
37
|
+
readonly total: number;
|
|
38
|
+
readonly totalPages: number;
|
|
39
|
+
};
|
|
40
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
41
|
+
readonly items: (input?: {
|
|
42
|
+
readonly page?: string | null | undefined;
|
|
43
|
+
readonly limit?: string | null | undefined;
|
|
44
|
+
} | undefined) => import("effect/Stream").Stream<{
|
|
45
|
+
readonly id: string & import("effect/Brand").Brand<"UnsubscribeId">;
|
|
46
|
+
readonly organizationId: string;
|
|
47
|
+
readonly name: string;
|
|
48
|
+
readonly description: string | null;
|
|
49
|
+
readonly memberCount: number;
|
|
50
|
+
readonly createdAt: string;
|
|
51
|
+
readonly updatedAt: string;
|
|
52
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
53
|
+
};
|
|
54
|
+
export declare const create: (input: {
|
|
55
|
+
readonly name: string;
|
|
56
|
+
readonly description?: string | null | undefined;
|
|
57
|
+
}) => import("effect/Effect").Effect<{
|
|
58
|
+
readonly id: string & import("effect/Brand").Brand<"UnsubscribeId">;
|
|
59
|
+
readonly organizationId: string;
|
|
60
|
+
readonly name: string;
|
|
61
|
+
readonly description: string | null;
|
|
62
|
+
readonly memberCount: number;
|
|
63
|
+
readonly createdAt: string;
|
|
64
|
+
readonly updatedAt: string;
|
|
65
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
66
|
+
export declare const update: (input: {
|
|
67
|
+
readonly id: string;
|
|
68
|
+
readonly name?: string | null | undefined;
|
|
69
|
+
readonly description?: string | null | undefined;
|
|
70
|
+
}) => import("effect/Effect").Effect<{
|
|
71
|
+
readonly id: string & import("effect/Brand").Brand<"UnsubscribeId">;
|
|
72
|
+
readonly organizationId: string;
|
|
73
|
+
readonly name: string;
|
|
74
|
+
readonly description: string | null;
|
|
75
|
+
readonly memberCount: number;
|
|
76
|
+
readonly createdAt: string;
|
|
77
|
+
readonly updatedAt: string;
|
|
78
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
79
|
+
export declare const remove: (input: {
|
|
80
|
+
readonly id: string;
|
|
81
|
+
}) => import("effect/Effect").Effect<{
|
|
82
|
+
readonly success: boolean;
|
|
83
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
84
|
+
export declare const listMembers: ((input: {
|
|
85
|
+
readonly groupId: string;
|
|
86
|
+
readonly page?: string | null | undefined;
|
|
87
|
+
readonly limit?: string | null | undefined;
|
|
88
|
+
}) => import("effect/Effect").Effect<{
|
|
89
|
+
readonly items: readonly {
|
|
90
|
+
readonly id: string;
|
|
91
|
+
readonly email: string;
|
|
92
|
+
readonly contactId: string | null;
|
|
93
|
+
readonly source: "api" | "complaint" | "link" | "manual";
|
|
94
|
+
readonly unsubscribedAt: string;
|
|
95
|
+
readonly createdAt: string;
|
|
96
|
+
}[];
|
|
97
|
+
readonly pagination: {
|
|
98
|
+
readonly page: number;
|
|
99
|
+
readonly limit: number;
|
|
100
|
+
readonly total: number;
|
|
101
|
+
readonly totalPages: number;
|
|
102
|
+
};
|
|
103
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>) & {
|
|
104
|
+
readonly pages: (input: {
|
|
105
|
+
readonly groupId: string;
|
|
106
|
+
readonly page?: string | null | undefined;
|
|
107
|
+
readonly limit?: string | null | undefined;
|
|
108
|
+
}) => import("effect/Stream").Stream<{
|
|
109
|
+
readonly items: readonly {
|
|
110
|
+
readonly id: string;
|
|
111
|
+
readonly email: string;
|
|
112
|
+
readonly contactId: string | null;
|
|
113
|
+
readonly source: "api" | "complaint" | "link" | "manual";
|
|
114
|
+
readonly unsubscribedAt: string;
|
|
115
|
+
readonly createdAt: string;
|
|
116
|
+
}[];
|
|
117
|
+
readonly pagination: {
|
|
118
|
+
readonly page: number;
|
|
119
|
+
readonly limit: number;
|
|
120
|
+
readonly total: number;
|
|
121
|
+
readonly totalPages: number;
|
|
122
|
+
};
|
|
123
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
124
|
+
readonly items: (input: {
|
|
125
|
+
readonly groupId: string;
|
|
126
|
+
readonly page?: string | null | undefined;
|
|
127
|
+
readonly limit?: string | null | undefined;
|
|
128
|
+
}) => import("effect/Stream").Stream<{
|
|
129
|
+
readonly id: string;
|
|
130
|
+
readonly email: string;
|
|
131
|
+
readonly contactId: string | null;
|
|
132
|
+
readonly source: "api" | "complaint" | "link" | "manual";
|
|
133
|
+
readonly unsubscribedAt: string;
|
|
134
|
+
readonly createdAt: string;
|
|
135
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
136
|
+
};
|
|
137
|
+
export declare const addEmails: (input: {
|
|
138
|
+
readonly groupId: string;
|
|
139
|
+
readonly emails: readonly string[];
|
|
140
|
+
readonly source?: string | null | undefined;
|
|
141
|
+
}) => import("effect/Effect").Effect<{
|
|
142
|
+
readonly added: number;
|
|
143
|
+
readonly skipped: number;
|
|
144
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
145
|
+
export declare const removeEmails: (input: {
|
|
146
|
+
readonly groupId: string;
|
|
147
|
+
readonly emails: readonly string[];
|
|
148
|
+
}) => import("effect/Effect").Effect<{
|
|
149
|
+
readonly removed: number;
|
|
150
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
151
|
+
export declare const checkSubscription: (input: {
|
|
152
|
+
readonly email: string;
|
|
153
|
+
readonly groupIds?: string | null | undefined;
|
|
154
|
+
}) => import("effect/Effect").Effect<{
|
|
155
|
+
readonly email: string;
|
|
156
|
+
readonly unsubscribedGroups: readonly {
|
|
157
|
+
readonly groupId: string;
|
|
158
|
+
readonly groupName: string;
|
|
159
|
+
readonly unsubscribedAt: string;
|
|
160
|
+
}[];
|
|
161
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.js";
|
|
2
|
+
import { n as make } from "../operation-02YX3hY9.js";
|
|
3
|
+
//#region src/effect/unsubscribe-groups.ts
|
|
4
|
+
var unsubscribe_groups_exports = /* @__PURE__ */ __exportAll({
|
|
5
|
+
addEmails: () => addEmails,
|
|
6
|
+
checkSubscription: () => checkSubscription,
|
|
7
|
+
create: () => create,
|
|
8
|
+
list: () => list,
|
|
9
|
+
listMembers: () => listMembers,
|
|
10
|
+
remove: () => remove,
|
|
11
|
+
removeEmails: () => removeEmails,
|
|
12
|
+
update: () => update
|
|
13
|
+
});
|
|
14
|
+
const list = make("unsubscribeList");
|
|
15
|
+
const create = make("unsubscribeCreate");
|
|
16
|
+
const update = make("unsubscribeUpdate");
|
|
17
|
+
const remove = make("unsubscribeRemove");
|
|
18
|
+
const listMembers = make("unsubscribeListMembers");
|
|
19
|
+
const addEmails = make("unsubscribeAddEmails");
|
|
20
|
+
const removeEmails = make("unsubscribeRemoveEmails");
|
|
21
|
+
const checkSubscription = make("unsubscribeCheckSubscription");
|
|
22
|
+
//#endregion
|
|
23
|
+
export { addEmails, checkSubscription, create, list, listMembers, remove, removeEmails, unsubscribe_groups_exports as t, update };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=unsubscribe-groups.js.map
|
|
@@ -3,12 +3,13 @@ export declare const list: ((input?: {
|
|
|
3
3
|
readonly page?: string | null | undefined;
|
|
4
4
|
readonly limit?: string | null | undefined;
|
|
5
5
|
readonly search?: string | null | undefined;
|
|
6
|
+
readonly status?: string | null | undefined;
|
|
6
7
|
} | undefined) => import("effect/Effect").Effect<{
|
|
7
8
|
readonly items: readonly {
|
|
8
9
|
readonly id: string & import("effect/Brand").Brand<"WebhookEndpointId">;
|
|
9
10
|
readonly name: string;
|
|
10
11
|
readonly url: string;
|
|
11
|
-
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.
|
|
12
|
+
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.updated" | "domain.updated" | "domain.warming.updated" | "message.bounced" | "message.complained" | "message.delivered" | "message.failed" | "message.read" | "message.received" | "message.sent" | "webhook.created" | "webhook.deleted" | "webhook.test" | "webhook.updated")[];
|
|
12
13
|
readonly channels: readonly "email"[] | null;
|
|
13
14
|
readonly status: "active" | "disabled";
|
|
14
15
|
readonly hasCustomHeaders: boolean;
|
|
@@ -16,6 +17,13 @@ export declare const list: ((input?: {
|
|
|
16
17
|
readonly lastSucceededAt: string | null;
|
|
17
18
|
readonly createdAt: string;
|
|
18
19
|
readonly updatedAt: string;
|
|
20
|
+
readonly deliveries: {
|
|
21
|
+
readonly total: number;
|
|
22
|
+
readonly pending: number;
|
|
23
|
+
readonly delivered: number;
|
|
24
|
+
readonly exhausted: number;
|
|
25
|
+
readonly cancelled: number;
|
|
26
|
+
};
|
|
19
27
|
}[];
|
|
20
28
|
readonly pagination: {
|
|
21
29
|
readonly page: number;
|
|
@@ -23,17 +31,18 @@ export declare const list: ((input?: {
|
|
|
23
31
|
readonly total: number;
|
|
24
32
|
readonly totalPages: number;
|
|
25
33
|
};
|
|
26
|
-
}, import("./generated").ForbiddenError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>) & {
|
|
34
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>) & {
|
|
27
35
|
readonly pages: (input?: {
|
|
28
36
|
readonly page?: string | null | undefined;
|
|
29
37
|
readonly limit?: string | null | undefined;
|
|
30
38
|
readonly search?: string | null | undefined;
|
|
39
|
+
readonly status?: string | null | undefined;
|
|
31
40
|
} | undefined) => import("effect/Stream").Stream<{
|
|
32
41
|
readonly items: readonly {
|
|
33
42
|
readonly id: string & import("effect/Brand").Brand<"WebhookEndpointId">;
|
|
34
43
|
readonly name: string;
|
|
35
44
|
readonly url: string;
|
|
36
|
-
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.
|
|
45
|
+
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.updated" | "domain.updated" | "domain.warming.updated" | "message.bounced" | "message.complained" | "message.delivered" | "message.failed" | "message.read" | "message.received" | "message.sent" | "webhook.created" | "webhook.deleted" | "webhook.test" | "webhook.updated")[];
|
|
37
46
|
readonly channels: readonly "email"[] | null;
|
|
38
47
|
readonly status: "active" | "disabled";
|
|
39
48
|
readonly hasCustomHeaders: boolean;
|
|
@@ -41,6 +50,13 @@ export declare const list: ((input?: {
|
|
|
41
50
|
readonly lastSucceededAt: string | null;
|
|
42
51
|
readonly createdAt: string;
|
|
43
52
|
readonly updatedAt: string;
|
|
53
|
+
readonly deliveries: {
|
|
54
|
+
readonly total: number;
|
|
55
|
+
readonly pending: number;
|
|
56
|
+
readonly delivered: number;
|
|
57
|
+
readonly exhausted: number;
|
|
58
|
+
readonly cancelled: number;
|
|
59
|
+
};
|
|
44
60
|
}[];
|
|
45
61
|
readonly pagination: {
|
|
46
62
|
readonly page: number;
|
|
@@ -48,16 +64,17 @@ export declare const list: ((input?: {
|
|
|
48
64
|
readonly total: number;
|
|
49
65
|
readonly totalPages: number;
|
|
50
66
|
};
|
|
51
|
-
}, import("./generated").ForbiddenError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
67
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
52
68
|
readonly items: (input?: {
|
|
53
69
|
readonly page?: string | null | undefined;
|
|
54
70
|
readonly limit?: string | null | undefined;
|
|
55
71
|
readonly search?: string | null | undefined;
|
|
72
|
+
readonly status?: string | null | undefined;
|
|
56
73
|
} | undefined) => import("effect/Stream").Stream<{
|
|
57
74
|
readonly id: string & import("effect/Brand").Brand<"WebhookEndpointId">;
|
|
58
75
|
readonly name: string;
|
|
59
76
|
readonly url: string;
|
|
60
|
-
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.
|
|
77
|
+
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.updated" | "domain.updated" | "domain.warming.updated" | "message.bounced" | "message.complained" | "message.delivered" | "message.failed" | "message.read" | "message.received" | "message.sent" | "webhook.created" | "webhook.deleted" | "webhook.test" | "webhook.updated")[];
|
|
61
78
|
readonly channels: readonly "email"[] | null;
|
|
62
79
|
readonly status: "active" | "disabled";
|
|
63
80
|
readonly hasCustomHeaders: boolean;
|
|
@@ -65,7 +82,14 @@ export declare const list: ((input?: {
|
|
|
65
82
|
readonly lastSucceededAt: string | null;
|
|
66
83
|
readonly createdAt: string;
|
|
67
84
|
readonly updatedAt: string;
|
|
68
|
-
|
|
85
|
+
readonly deliveries: {
|
|
86
|
+
readonly total: number;
|
|
87
|
+
readonly pending: number;
|
|
88
|
+
readonly delivered: number;
|
|
89
|
+
readonly exhausted: number;
|
|
90
|
+
readonly cancelled: number;
|
|
91
|
+
};
|
|
92
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
69
93
|
};
|
|
70
94
|
export declare const create: (input: {
|
|
71
95
|
readonly name: string;
|
|
@@ -81,7 +105,7 @@ export declare const create: (input: {
|
|
|
81
105
|
readonly id: string & import("effect/Brand").Brand<"WebhookEndpointId">;
|
|
82
106
|
readonly name: string;
|
|
83
107
|
readonly url: string;
|
|
84
|
-
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.
|
|
108
|
+
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.updated" | "domain.updated" | "domain.warming.updated" | "message.bounced" | "message.complained" | "message.delivered" | "message.failed" | "message.read" | "message.received" | "message.sent" | "webhook.created" | "webhook.deleted" | "webhook.test" | "webhook.updated")[];
|
|
85
109
|
readonly channels: readonly "email"[] | null;
|
|
86
110
|
readonly status: "active" | "disabled";
|
|
87
111
|
readonly hasCustomHeaders: boolean;
|
|
@@ -91,14 +115,14 @@ export declare const create: (input: {
|
|
|
91
115
|
readonly updatedAt: string;
|
|
92
116
|
};
|
|
93
117
|
readonly secret: import("effect/Redacted").Redacted<string>;
|
|
94
|
-
}, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").PaymentRequiredError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
|
|
118
|
+
}, import("./generated").BillingProviderError | import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").PaymentRequiredError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
|
|
95
119
|
export declare const get: (input: {
|
|
96
120
|
readonly id: string;
|
|
97
121
|
}) => import("effect/Effect").Effect<{
|
|
98
122
|
readonly id: string & import("effect/Brand").Brand<"WebhookEndpointId">;
|
|
99
123
|
readonly name: string;
|
|
100
124
|
readonly url: string;
|
|
101
|
-
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.
|
|
125
|
+
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.updated" | "domain.updated" | "domain.warming.updated" | "message.bounced" | "message.complained" | "message.delivered" | "message.failed" | "message.read" | "message.received" | "message.sent" | "webhook.created" | "webhook.deleted" | "webhook.test" | "webhook.updated")[];
|
|
102
126
|
readonly channels: readonly "email"[] | null;
|
|
103
127
|
readonly status: "active" | "disabled";
|
|
104
128
|
readonly hasCustomHeaders: boolean;
|
|
@@ -106,12 +130,12 @@ export declare const get: (input: {
|
|
|
106
130
|
readonly lastSucceededAt: string | null;
|
|
107
131
|
readonly createdAt: string;
|
|
108
132
|
readonly updatedAt: string;
|
|
109
|
-
}, import("./generated").ForbiddenError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
133
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
110
134
|
export declare const remove: (input: {
|
|
111
135
|
readonly id: string;
|
|
112
136
|
}) => import("effect/Effect").Effect<{
|
|
113
137
|
readonly success: boolean;
|
|
114
|
-
}, import("./generated").BillingProviderError | import("./generated").ForbiddenError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
138
|
+
}, import("./generated").BillingProviderError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
115
139
|
export declare const update: (input: {
|
|
116
140
|
readonly id: string;
|
|
117
141
|
readonly name?: string | null | undefined;
|
|
@@ -126,7 +150,7 @@ export declare const update: (input: {
|
|
|
126
150
|
readonly id: string & import("effect/Brand").Brand<"WebhookEndpointId">;
|
|
127
151
|
readonly name: string;
|
|
128
152
|
readonly url: string;
|
|
129
|
-
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.
|
|
153
|
+
readonly eventTypes: readonly ("contact.created" | "contact.deleted" | "contact.updated" | "conversation.archived" | "conversation.created" | "conversation.updated" | "domain.updated" | "domain.warming.updated" | "message.bounced" | "message.complained" | "message.delivered" | "message.failed" | "message.read" | "message.received" | "message.sent" | "webhook.created" | "webhook.deleted" | "webhook.test" | "webhook.updated")[];
|
|
130
154
|
readonly channels: readonly "email"[] | null;
|
|
131
155
|
readonly status: "active" | "disabled";
|
|
132
156
|
readonly hasCustomHeaders: boolean;
|
|
@@ -134,7 +158,7 @@ export declare const update: (input: {
|
|
|
134
158
|
readonly lastSucceededAt: string | null;
|
|
135
159
|
readonly createdAt: string;
|
|
136
160
|
readonly updatedAt: string;
|
|
137
|
-
}, import("./generated").ConflictError | import("./generated").ForbiddenError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
|
|
161
|
+
}, import("./generated").ConflictError | import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
|
|
138
162
|
export declare const test: (input: {
|
|
139
163
|
readonly id: string;
|
|
140
164
|
readonly data?: {
|
|
@@ -168,7 +192,7 @@ export declare const test: (input: {
|
|
|
168
192
|
readonly accepted: true;
|
|
169
193
|
readonly eventId: string & import("effect/Brand").Brand<"WebhookEventId">;
|
|
170
194
|
readonly deliveryId: string & import("effect/Brand").Brand<"WebhookDeliveryId">;
|
|
171
|
-
}, import("./generated").ForbiddenError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
195
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
172
196
|
export declare const getLogs: (input: {
|
|
173
197
|
readonly webhookId: string;
|
|
174
198
|
readonly limit?: string | null | undefined;
|
|
@@ -176,6 +200,8 @@ export declare const getLogs: (input: {
|
|
|
176
200
|
readonly data: readonly {
|
|
177
201
|
readonly id: string & import("effect/Brand").Brand<"WebhookDeliveryId">;
|
|
178
202
|
readonly eventId: string & import("effect/Brand").Brand<"WebhookEventId">;
|
|
203
|
+
readonly eventType: string;
|
|
204
|
+
readonly occurredAt: string;
|
|
179
205
|
readonly endpointId: string & import("effect/Brand").Brand<"WebhookEndpointId">;
|
|
180
206
|
readonly status: "cancelled" | "delivered" | "exhausted" | "pending";
|
|
181
207
|
readonly automaticAttempts: number;
|
|
@@ -201,16 +227,24 @@ export declare const getLogs: (input: {
|
|
|
201
227
|
}[];
|
|
202
228
|
}[];
|
|
203
229
|
readonly hasMore: boolean;
|
|
204
|
-
}, import("./generated").ForbiddenError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
230
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
205
231
|
export declare const getStats: (input: {
|
|
206
232
|
readonly webhookId: string;
|
|
233
|
+
readonly period?: string | null | undefined;
|
|
207
234
|
}) => import("effect/Effect").Effect<{
|
|
208
235
|
readonly total: number;
|
|
209
236
|
readonly pending: number;
|
|
210
237
|
readonly delivered: number;
|
|
211
238
|
readonly exhausted: number;
|
|
212
239
|
readonly cancelled: number;
|
|
213
|
-
|
|
240
|
+
readonly daily: readonly {
|
|
241
|
+
readonly date: string;
|
|
242
|
+
readonly pending: number;
|
|
243
|
+
readonly delivered: number;
|
|
244
|
+
readonly exhausted: number;
|
|
245
|
+
readonly cancelled: number;
|
|
246
|
+
}[];
|
|
247
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError, import("./client").Service>;
|
|
214
248
|
export declare const retryDelivery: (input: {
|
|
215
249
|
readonly webhookId: string;
|
|
216
250
|
readonly deliveryId: string;
|
|
@@ -219,9 +253,9 @@ export declare const retryDelivery: (input: {
|
|
|
219
253
|
readonly deliveryId: string & import("effect/Brand").Brand<"WebhookDeliveryId">;
|
|
220
254
|
readonly attemptId: string & import("effect/Brand").Brand<"WebhookAttemptId">;
|
|
221
255
|
readonly outcome: "failed" | "succeeded";
|
|
222
|
-
}, import("./generated").ForbiddenError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
|
|
256
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
|
|
223
257
|
export declare const regenerateSecret: (input: {
|
|
224
258
|
readonly webhookId: string;
|
|
225
259
|
}) => import("effect/Effect").Effect<{
|
|
226
260
|
readonly secret: import("effect/Redacted").Redacted<string>;
|
|
227
|
-
}, import("./generated").ForbiddenError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
|
|
261
|
+
}, import("./generated").ForbiddenError | import("./generated").GatewayTimeoutError | import("effect/unstable/http/HttpClientError").HttpClientError | import("./generated").InternalError | import("./generated").ResourceNotFoundError | import("effect/Schema").SchemaError | import("./generated").UnauthorizedError | import("./generated").ValidationError, import("./client").Service>;
|
package/dist/effect/webhooks.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { n as make } from "../operation-
|
|
3
|
-
import {
|
|
2
|
+
import { n as make } from "../operation-02YX3hY9.js";
|
|
3
|
+
import { b as TestWebhookPayload, c as CreateWebhookPayload, w as UpdateWebhookPayload } from "../client-DCM6U0-I.js";
|
|
4
4
|
//#region src/effect/webhooks.ts
|
|
5
5
|
var webhooks_exports = /* @__PURE__ */ __exportAll({
|
|
6
6
|
CreatePayload: () => CreateWebhookPayload,
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as
|
|
2
|
-
export { BillingProviderError, ConflictError, EmailChannelError, ExternalServiceError, FlagDisabledError, ForbiddenError, InternalError, PaymentRequiredError, RateLimitedError, ResourceNotFoundError, SamvaApiError, SamvaTransportError, UnauthorizedError, ValidationError,
|
|
1
|
+
import { _ as SamvaTransportError, a as DeliveryUnavailableError, b as fromApiError, c as FlagDisabledError, d as InternalError, f as OnboardingReviewRequiredError, g as SamvaApiError, h as ResourceNotFoundError, i as ConflictError, l as ForbiddenError, m as RateLimitedError, n as AnalyticsQueryError, o as EmailChannelError, p as PaymentRequiredError, r as BillingProviderError, s as ExternalServiceError, t as createClient, u as GatewayTimeoutError, v as UnauthorizedError, y as ValidationError } from "./promises-8MaPNAam.js";
|
|
2
|
+
export { AnalyticsQueryError, BillingProviderError, ConflictError, DeliveryUnavailableError, EmailChannelError, ExternalServiceError, FlagDisabledError, ForbiddenError, GatewayTimeoutError, InternalError, OnboardingReviewRequiredError, PaymentRequiredError, RateLimitedError, ResourceNotFoundError, SamvaApiError, SamvaTransportError, UnauthorizedError, ValidationError, createClient, fromApiError };
|
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
function toRecipientArray(recipient) {
|
|
3
3
|
return Array.isArray(recipient) ? recipient : [recipient];
|
|
4
4
|
}
|
|
5
|
-
function normalizeMessageRecipient(recipient
|
|
5
|
+
function normalizeMessageRecipient(recipient) {
|
|
6
6
|
if (typeof recipient === "string") return { email: recipient };
|
|
7
7
|
if ("contactId" in recipient || "email" in recipient || "phone" in recipient) return recipient;
|
|
8
8
|
return { contactId: recipient.id };
|
|
9
9
|
}
|
|
10
|
-
function normalizeRecipients(recipient
|
|
11
|
-
return toRecipientArray(recipient).map((item) => normalizeMessageRecipient(item
|
|
10
|
+
function normalizeRecipients(recipient) {
|
|
11
|
+
return toRecipientArray(recipient).map((item) => normalizeMessageRecipient(item));
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* cc / bcc payload fragment. `undefined` → omitted (JSON drops it anyway),
|
|
15
15
|
* `null` → passed through (explicit "no recipients"), otherwise normalized.
|
|
16
16
|
* This is the single canonical rule for both clients.
|
|
17
17
|
*/
|
|
18
|
-
function ccBccPayload(key, value
|
|
18
|
+
function ccBccPayload(key, value) {
|
|
19
19
|
if (value === void 0) return {};
|
|
20
20
|
if (value === null) return { [key]: null };
|
|
21
|
-
return { [key]: normalizeRecipients(value
|
|
21
|
+
return { [key]: normalizeRecipients(value) };
|
|
22
22
|
}
|
|
23
23
|
function normalizeReplyTo(replyTo) {
|
|
24
24
|
if (replyTo === void 0 || replyTo === null) return replyTo;
|
|
@@ -45,29 +45,28 @@ function normalizeEmailContent(input) {
|
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
47
|
function buildEmailSendPayload(input) {
|
|
48
|
-
const { to, cc, bcc, conversationId,
|
|
48
|
+
const { to, cc, bcc, conversationId, metadata, from, ...emailContent } = input;
|
|
49
49
|
return {
|
|
50
50
|
channel: "email",
|
|
51
51
|
conversationId,
|
|
52
|
-
idempotencyKey,
|
|
53
52
|
metadata,
|
|
54
53
|
from,
|
|
55
|
-
to: normalizeRecipients(to
|
|
56
|
-
...ccBccPayload("cc", cc
|
|
57
|
-
...ccBccPayload("bcc", bcc
|
|
54
|
+
to: normalizeRecipients(to),
|
|
55
|
+
...ccBccPayload("cc", cc),
|
|
56
|
+
...ccBccPayload("bcc", bcc),
|
|
58
57
|
email: normalizeEmailContent(emailContent)
|
|
59
58
|
};
|
|
60
59
|
}
|
|
61
60
|
function buildMessagesSendPayload(input) {
|
|
62
61
|
return {
|
|
63
62
|
...input,
|
|
64
|
-
to: normalizeRecipients(input.to
|
|
65
|
-
...ccBccPayload("cc", input.cc
|
|
66
|
-
...ccBccPayload("bcc", input.bcc
|
|
63
|
+
to: normalizeRecipients(input.to),
|
|
64
|
+
...ccBccPayload("cc", input.cc),
|
|
65
|
+
...ccBccPayload("bcc", input.bcc),
|
|
67
66
|
email: normalizeEmailContent(input.email ?? {})
|
|
68
67
|
};
|
|
69
68
|
}
|
|
70
69
|
//#endregion
|
|
71
70
|
export { buildMessagesSendPayload as n, replyToEmailsPayload as r, buildEmailSendPayload as t };
|
|
72
71
|
|
|
73
|
-
//# sourceMappingURL=normalize-
|
|
72
|
+
//# sourceMappingURL=normalize-B79uJIeb.js.map
|
package/dist/normalize.d.ts
CHANGED
|
@@ -2,16 +2,13 @@
|
|
|
2
2
|
* Shared, pure send-input normalization for the Effect and Promise clients.
|
|
3
3
|
*
|
|
4
4
|
* No Effect, no I/O — plain functions. Both ergonomic layers import these
|
|
5
|
-
* directly so recipient, replyTo, email-content
|
|
6
|
-
*
|
|
7
|
-
* this extraction lived only in the Effect copy; the `from`-placement drift only
|
|
8
|
-
* in the email helpers.) The wire-level parity tests are the proof.
|
|
5
|
+
* directly so recipient, replyTo, and email-content shaping cannot drift
|
|
6
|
+
* between the two clients. The wire-level parity tests are the proof.
|
|
9
7
|
*
|
|
10
8
|
* The generated payload types differ nominally between the two clients (they come
|
|
11
9
|
* from two different codegen outputs) but are structurally identical, so these
|
|
12
10
|
* builders return structural shapes and each client casts the assembled payload
|
|
13
|
-
* to its own generated body type at the call site
|
|
14
|
-
* already performed inline.
|
|
11
|
+
* to its own generated body type at the call site.
|
|
15
12
|
*/
|
|
16
13
|
/** A recipient the caller may pass in ergonomic form. */
|
|
17
14
|
type ErgonomicRecipient<Recipient> = Recipient | {
|
|
@@ -34,7 +31,6 @@ export interface EmailSendFields<Recipient> {
|
|
|
34
31
|
readonly cc?: ErgonomicRecipient<Recipient> | ReadonlyArray<ErgonomicRecipient<Recipient>> | null | undefined;
|
|
35
32
|
readonly bcc?: ErgonomicRecipient<Recipient> | ReadonlyArray<ErgonomicRecipient<Recipient>> | null | undefined;
|
|
36
33
|
readonly conversationId?: string | null | undefined;
|
|
37
|
-
readonly idempotencyKey?: string | null | undefined;
|
|
38
34
|
readonly metadata?: Metadata;
|
|
39
35
|
readonly from?: unknown;
|
|
40
36
|
readonly replyTo?: ErgonomicReplyTo | null | undefined;
|