@wildo-ai/external-connectors-models 1.1.4 → 1.1.6
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/esm/companion-exports.d.ts.map +1 -1
- package/dist/esm/core/commons.external-connectors-models.schemas.d.ts +23 -132
- package/dist/esm/core/commons.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/commons.external-connectors-models.schemas.js +23 -31
- package/dist/esm/core/commons.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/core/security.external-connectors-models.schemas.d.ts +40 -8
- package/dist/esm/core/security.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/security.external-connectors-models.schemas.js +61 -14
- package/dist/esm/core/security.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/index.d.ts +5 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts +78 -163
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js +78 -93
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.d.ts +258 -13
- package/dist/esm/protocols/billing.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.js +41 -0
- package/dist/esm/protocols/billing.standard-interface.schemas.js.map +1 -1
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.d.ts +57 -17
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.js +26 -7
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/email-inbound.standard-interface.schemas.d.ts +229 -0
- package/dist/esm/protocols/email-inbound.standard-interface.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/email-inbound.standard-interface.schemas.js +160 -0
- package/dist/esm/protocols/email-inbound.standard-interface.schemas.js.map +1 -0
- package/dist/esm/protocols/email.external-connectors-models.schemas.d.ts +1 -56
- package/dist/esm/protocols/email.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/email.external-connectors-models.schemas.js +0 -20
- package/dist/esm/protocols/email.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/email.standard-interface.schemas.d.ts +4 -4
- package/dist/esm/protocols/email.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.d.ts +1 -16
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.js +4 -9
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/file-storage.standard-interface.d.ts +179 -0
- package/dist/esm/protocols/file-storage.standard-interface.d.ts.map +1 -0
- package/dist/esm/protocols/file-storage.standard-interface.js +79 -0
- package/dist/esm/protocols/file-storage.standard-interface.js.map +1 -0
- package/dist/esm/protocols/frontend.external-connectors-models.schemas.d.ts +6 -13
- package/dist/esm/protocols/frontend.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/frontend.external-connectors-models.schemas.js +0 -9
- package/dist/esm/protocols/frontend.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.d.ts +20 -16
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.js +12 -9
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/image.external-connectors-models.schemas.d.ts +1 -18
- package/dist/esm/protocols/image.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/image.external-connectors-models.schemas.js +1 -7
- package/dist/esm/protocols/image.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts +100 -40
- package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/llm.external-connectors-models.schemas.js +164 -41
- package/dist/esm/protocols/llm.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/oauth2-provider-assurance.definitions.d.ts +7 -0
- package/dist/esm/protocols/oauth2-provider-assurance.definitions.d.ts.map +1 -0
- package/dist/esm/protocols/oauth2-provider-assurance.definitions.js +36 -0
- package/dist/esm/protocols/oauth2-provider-assurance.definitions.js.map +1 -0
- package/dist/esm/protocols/oauth2-provider-assurance.schemas.d.ts +23 -0
- package/dist/esm/protocols/oauth2-provider-assurance.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/oauth2-provider-assurance.schemas.js +25 -0
- package/dist/esm/protocols/oauth2-provider-assurance.schemas.js.map +1 -0
- package/dist/esm/protocols/oauth2.external-connectors-models.schemas.d.ts +0 -148
- package/dist/esm/protocols/oauth2.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/oauth2.external-connectors-models.schemas.js +1 -40
- package/dist/esm/protocols/oauth2.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.d.ts +39 -0
- package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.d.ts.map +1 -0
- package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.js +66 -0
- package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.js.map +1 -0
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts +863 -16
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js +703 -0
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/sms.external-connectors-models.schemas.d.ts +0 -39
- package/dist/esm/protocols/sms.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/sms.external-connectors-models.schemas.js +0 -13
- package/dist/esm/protocols/sms.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/sms.standard-interface.schemas.d.ts +1 -1
- package/dist/esm/protocols/sms.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/sms.standard-interface.schemas.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -3
- package/dist/esm/core/protocols.external-connectors-models.schemas.d.ts +0 -74
- package/dist/esm/core/protocols.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/core/protocols.external-connectors-models.schemas.js +0 -1
- package/dist/esm/core/protocols.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.d.ts +0 -37
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.js +0 -10
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.js.map +0 -1
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* One authentication method's result, as a receiving server records it in `Authentication-Results`.
|
|
4
|
+
*
|
|
5
|
+
* The union of the results the three methods define, so one vocabulary serves SPF, DKIM and DMARC.
|
|
6
|
+
* Two members go beyond what a DMARC result can be — `SOFTFAIL` (SPF only) and `POLICY` (DKIM and
|
|
7
|
+
* SPF) — and are here because mapping them onto a neighbour would record a result the receiver did
|
|
8
|
+
* not report: a softfail is neither a fail nor neutral.
|
|
9
|
+
*
|
|
10
|
+
* spec-cite: RFC 8601 §2.7.1 (DKIM results: none, pass, fail, policy, neutral, temperror, permerror)
|
|
11
|
+
* and §2.7.2 (SPF results: none, pass, fail, softfail, neutral, temperror, permerror, plus policy
|
|
12
|
+
* from §2.4); DMARC results per RFC 7489 §11.2 (none, pass, fail, temperror, permerror). Fetched 2026-09-27.
|
|
13
|
+
*/
|
|
14
|
+
export declare enum EmailAuthenticationVerdict {
|
|
15
|
+
PASS = "pass",
|
|
16
|
+
FAIL = "fail",
|
|
17
|
+
SOFTFAIL = "softfail",
|
|
18
|
+
NEUTRAL = "neutral",
|
|
19
|
+
NONE = "none",
|
|
20
|
+
POLICY = "policy",
|
|
21
|
+
TEMPERROR = "temperror",
|
|
22
|
+
PERMERROR = "permerror"
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* What the receiving provider concluded about a message's origin.
|
|
26
|
+
*
|
|
27
|
+
* `dmarcAligned` is kept beside the DMARC verdict rather than folded into it because it is the fact
|
|
28
|
+
* sender assurance is built on: DMARC authenticates the `From` DOMAIN by requiring that it align with
|
|
29
|
+
* an identifier SPF or DKIM authenticated. A provider that reports DMARC `pass` has already required
|
|
30
|
+
* alignment, so for most vendors `dmarcAligned` equals `dmarc === PASS`; it is a separate field so a
|
|
31
|
+
* vendor that reports the two independently is not forced to invent one from the other.
|
|
32
|
+
*/
|
|
33
|
+
export declare const StandardInboundEmail_AuthenticationSchema: z.ZodObject<{
|
|
34
|
+
spf: z.ZodEnum<typeof EmailAuthenticationVerdict>;
|
|
35
|
+
dkim: z.ZodEnum<typeof EmailAuthenticationVerdict>;
|
|
36
|
+
dmarc: z.ZodEnum<typeof EmailAuthenticationVerdict>;
|
|
37
|
+
dmarcAligned: z.ZodBoolean;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
export type StandardInboundEmail_Authentication = z.infer<typeof StandardInboundEmail_AuthenticationSchema>;
|
|
40
|
+
export declare const StandardInboundEmail_AddressSchema: z.ZodObject<{
|
|
41
|
+
address: z.ZodString;
|
|
42
|
+
name: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, z.core.$strip>;
|
|
44
|
+
export type StandardInboundEmail_Address = z.infer<typeof StandardInboundEmail_AddressSchema>;
|
|
45
|
+
/** How a MIME part asks to be presented (`Content-Disposition`). spec-cite: RFC 2183 §2.1 (`inline`) and §2.2 (`attachment`). */
|
|
46
|
+
export declare enum EmailAttachmentDisposition {
|
|
47
|
+
ATTACHMENT = "attachment",
|
|
48
|
+
INLINE = "inline"
|
|
49
|
+
}
|
|
50
|
+
/** One attachment as the provider describes it. The bytes are fetched through `openAttachment`, never inlined. */
|
|
51
|
+
export declare const StandardInboundEmail_AttachmentSchema: z.ZodObject<{
|
|
52
|
+
ref: z.ZodString;
|
|
53
|
+
filename: z.ZodString;
|
|
54
|
+
contentType: z.ZodString;
|
|
55
|
+
sizeBytes: z.ZodNumber;
|
|
56
|
+
contentId: z.ZodOptional<z.ZodString>;
|
|
57
|
+
disposition: z.ZodOptional<z.ZodEnum<typeof EmailAttachmentDisposition>>;
|
|
58
|
+
}, z.core.$strip>;
|
|
59
|
+
export type StandardInboundEmail_Attachment = z.infer<typeof StandardInboundEmail_AttachmentSchema>;
|
|
60
|
+
/**
|
|
61
|
+
* What a provider's notification says, parsed. Small on purpose: a notification tells the engine
|
|
62
|
+
* THAT a message arrived and where to fetch it, and nothing past this point trusts it for more.
|
|
63
|
+
*/
|
|
64
|
+
export declare const StandardInboundEmail_NotificationSchema: z.ZodObject<{
|
|
65
|
+
providerMessageId: z.ZodString;
|
|
66
|
+
receivedFor: z.ZodArray<z.ZodString>;
|
|
67
|
+
receivedAt: z.ZodCoercedDate<unknown>;
|
|
68
|
+
}, z.core.$strip>;
|
|
69
|
+
export type StandardInboundEmail_Notification = z.infer<typeof StandardInboundEmail_NotificationSchema>;
|
|
70
|
+
/**
|
|
71
|
+
* One received message, provider-neutral.
|
|
72
|
+
*
|
|
73
|
+
* The threading headers are separated out because the engine correlates threads from them;
|
|
74
|
+
* `headers` carries the rest, for a channel record that chooses to keep an allow-listed subset.
|
|
75
|
+
*/
|
|
76
|
+
export declare const StandardInboundEmail_MessageSchema: z.ZodObject<{
|
|
77
|
+
providerMessageId: z.ZodString;
|
|
78
|
+
messageId: z.ZodOptional<z.ZodString>;
|
|
79
|
+
inReplyTo: z.ZodOptional<z.ZodString>;
|
|
80
|
+
references: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
81
|
+
from: z.ZodObject<{
|
|
82
|
+
address: z.ZodString;
|
|
83
|
+
name: z.ZodOptional<z.ZodString>;
|
|
84
|
+
}, z.core.$strip>;
|
|
85
|
+
to: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
86
|
+
address: z.ZodString;
|
|
87
|
+
name: z.ZodOptional<z.ZodString>;
|
|
88
|
+
}, z.core.$strip>>>;
|
|
89
|
+
cc: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
90
|
+
address: z.ZodString;
|
|
91
|
+
name: z.ZodOptional<z.ZodString>;
|
|
92
|
+
}, z.core.$strip>>>;
|
|
93
|
+
replyTo: z.ZodOptional<z.ZodObject<{
|
|
94
|
+
address: z.ZodString;
|
|
95
|
+
name: z.ZodOptional<z.ZodString>;
|
|
96
|
+
}, z.core.$strip>>;
|
|
97
|
+
receivedFor: z.ZodArray<z.ZodString>;
|
|
98
|
+
subject: z.ZodDefault<z.ZodString>;
|
|
99
|
+
textBody: z.ZodOptional<z.ZodString>;
|
|
100
|
+
htmlBody: z.ZodOptional<z.ZodString>;
|
|
101
|
+
headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
102
|
+
authentication: z.ZodObject<{
|
|
103
|
+
spf: z.ZodEnum<typeof EmailAuthenticationVerdict>;
|
|
104
|
+
dkim: z.ZodEnum<typeof EmailAuthenticationVerdict>;
|
|
105
|
+
dmarc: z.ZodEnum<typeof EmailAuthenticationVerdict>;
|
|
106
|
+
dmarcAligned: z.ZodBoolean;
|
|
107
|
+
}, z.core.$strip>;
|
|
108
|
+
attachments: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
109
|
+
ref: z.ZodString;
|
|
110
|
+
filename: z.ZodString;
|
|
111
|
+
contentType: z.ZodString;
|
|
112
|
+
sizeBytes: z.ZodNumber;
|
|
113
|
+
contentId: z.ZodOptional<z.ZodString>;
|
|
114
|
+
disposition: z.ZodOptional<z.ZodEnum<typeof EmailAttachmentDisposition>>;
|
|
115
|
+
}, z.core.$strip>>>;
|
|
116
|
+
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
117
|
+
receivedAt: z.ZodCoercedDate<unknown>;
|
|
118
|
+
rawRef: z.ZodOptional<z.ZodString>;
|
|
119
|
+
}, z.core.$strip>;
|
|
120
|
+
export type StandardInboundEmail_Message = z.infer<typeof StandardInboundEmail_MessageSchema>;
|
|
121
|
+
/** The bytes of one attachment. */
|
|
122
|
+
export interface StandardInboundEmail_OpenedAttachment {
|
|
123
|
+
readonly bytes: Uint8Array;
|
|
124
|
+
readonly contentType: string;
|
|
125
|
+
readonly filename: string;
|
|
126
|
+
}
|
|
127
|
+
/** The original bytes of a message, exactly as the provider serves them. */
|
|
128
|
+
export interface StandardInboundEmail_OpenedRaw {
|
|
129
|
+
readonly bytes: Uint8Array;
|
|
130
|
+
}
|
|
131
|
+
/** Where a domain stands AT THE PROVIDER — distinct from the organization's own status, which also records ownership proof. */
|
|
132
|
+
export declare enum EmailProviderDomainStatus {
|
|
133
|
+
/** The provider has not verified the domain's records yet (not started, pending, or a temporary failure it will retry). */
|
|
134
|
+
PENDING = "pending",
|
|
135
|
+
/** The provider verified the domain's records. */
|
|
136
|
+
VERIFIED = "verified",
|
|
137
|
+
/** The provider gave up verifying the records. */
|
|
138
|
+
FAILED = "failed"
|
|
139
|
+
}
|
|
140
|
+
/** One DNS record the provider asks to be published. */
|
|
141
|
+
export declare const StandardEmailDomain_DnsRecordSchema: z.ZodObject<{
|
|
142
|
+
purpose: z.ZodString;
|
|
143
|
+
type: z.ZodString;
|
|
144
|
+
name: z.ZodString;
|
|
145
|
+
value: z.ZodString;
|
|
146
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
147
|
+
status: z.ZodOptional<z.ZodString>;
|
|
148
|
+
}, z.core.$strip>;
|
|
149
|
+
export type StandardEmailDomain_DnsRecord = z.infer<typeof StandardEmailDomain_DnsRecordSchema>;
|
|
150
|
+
/** A domain as the provider describes it. */
|
|
151
|
+
export declare const StandardEmailDomainSchema: z.ZodObject<{
|
|
152
|
+
providerDomainId: z.ZodString;
|
|
153
|
+
name: z.ZodString;
|
|
154
|
+
status: z.ZodEnum<typeof EmailProviderDomainStatus>;
|
|
155
|
+
sending: z.ZodBoolean;
|
|
156
|
+
receiving: z.ZodBoolean;
|
|
157
|
+
records: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
158
|
+
purpose: z.ZodString;
|
|
159
|
+
type: z.ZodString;
|
|
160
|
+
name: z.ZodString;
|
|
161
|
+
value: z.ZodString;
|
|
162
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
163
|
+
status: z.ZodOptional<z.ZodString>;
|
|
164
|
+
}, z.core.$strip>>>;
|
|
165
|
+
}, z.core.$strip>;
|
|
166
|
+
export type StandardEmailDomain = z.infer<typeof StandardEmailDomainSchema>;
|
|
167
|
+
/**
|
|
168
|
+
* What an EMAIL_INBOUND provider implements to host an organization's own domain. Every tenant shares one
|
|
169
|
+
* provider account, so the ENGINE proves the organization owns the domain before it ever calls `createDomain`.
|
|
170
|
+
*/
|
|
171
|
+
export interface StandardEmailDomains_Interface {
|
|
172
|
+
createDomain(input: {
|
|
173
|
+
readonly name: string;
|
|
174
|
+
readonly sending: boolean;
|
|
175
|
+
readonly receiving: boolean;
|
|
176
|
+
}): Promise<StandardEmailDomain>;
|
|
177
|
+
getDomain(providerDomainId: string): Promise<StandardEmailDomain | null>;
|
|
178
|
+
/** Start the provider's (asynchronous) verification. */
|
|
179
|
+
verifyDomain(providerDomainId: string): Promise<void>;
|
|
180
|
+
deleteDomain(providerDomainId: string): Promise<void>;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* What an EMAIL_INBOUND provider implements. Built by the provider module's adapter factory with the
|
|
184
|
+
* credential the engine resolved, exactly as a billing adapter is — the module never reads a secret
|
|
185
|
+
* itself.
|
|
186
|
+
*/
|
|
187
|
+
export interface StandardInboundEmail_Interface {
|
|
188
|
+
/** Map the verified notification body onto the standard notification. Pure; refuses an unknown shape by throwing. */
|
|
189
|
+
parseNotification(body: unknown): StandardInboundEmail_Notification;
|
|
190
|
+
/** Fetch the whole message the notification announced. */
|
|
191
|
+
fetchMessage(providerMessageId: string): Promise<StandardInboundEmail_Message>;
|
|
192
|
+
/** Fetch one attachment's bytes, by the `ref` the message listed. */
|
|
193
|
+
openAttachment(ref: string): Promise<StandardInboundEmail_OpenedAttachment>;
|
|
194
|
+
/** Fetch the original message bytes, by the message's `rawRef`. */
|
|
195
|
+
openRaw(rawRef: string): Promise<StandardInboundEmail_OpenedRaw>;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* One request a provider module asks the engine to make on its behalf.
|
|
199
|
+
*
|
|
200
|
+
* `path` is appended to the contract's `baseUrl`. A provider that serves bytes from ANOTHER host (a
|
|
201
|
+
* signed download URL) returns `url` instead, and the engine admits it only against the hosts the
|
|
202
|
+
* contract declares — a provider-supplied URL is never fetched merely because a provider named it.
|
|
203
|
+
*/
|
|
204
|
+
export type InboundEmailProviderRequest = {
|
|
205
|
+
readonly path: string;
|
|
206
|
+
readonly method?: EmailProviderHttpMethod;
|
|
207
|
+
readonly jsonBody?: unknown;
|
|
208
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
209
|
+
} | {
|
|
210
|
+
readonly url: string;
|
|
211
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
212
|
+
};
|
|
213
|
+
/**
|
|
214
|
+
* The methods a provider's `path` request may use. A `url` request (a signed download link) is always a GET.
|
|
215
|
+
* Absent means GET.
|
|
216
|
+
*/
|
|
217
|
+
export declare enum EmailProviderHttpMethod {
|
|
218
|
+
GET = "GET",
|
|
219
|
+
POST = "POST",
|
|
220
|
+
PATCH = "PATCH",
|
|
221
|
+
DELETE = "DELETE"
|
|
222
|
+
}
|
|
223
|
+
/** A provider's HTTP answer, as the engine hands it to the provider's parser. */
|
|
224
|
+
export interface InboundEmailProviderResponseInput {
|
|
225
|
+
readonly status: number;
|
|
226
|
+
/** The JSON body, or `undefined` when the answer was not JSON. */
|
|
227
|
+
readonly body: unknown;
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=email-inbound.standard-interface.schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-inbound.standard-interface.schemas.d.ts","sourceRoot":"","sources":["../../../../src/protocols/email-inbound.standard-interface.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// ===============================================================
|
|
3
|
+
// Standard Inbound Email Interface (#1630)
|
|
4
|
+
// --------
|
|
5
|
+
// The canonical shape of a message an EMAIL_INBOUND provider RECEIVED for the application, and the
|
|
6
|
+
// three calls the engine makes on the provider to get it. Provider-agnostic: a vendor's module maps
|
|
7
|
+
// its own notification and message payloads onto these schemas, and nothing past that mapping ever
|
|
8
|
+
// sees a vendor field.
|
|
9
|
+
//
|
|
10
|
+
// There is deliberately NO `verify` here. The notification reaches the application through the
|
|
11
|
+
// provider's `WEBHOOK_ORIGINATOR` endpoint (the `inbound-email` key, capability `EMAIL_INBOUND`), and
|
|
12
|
+
// that endpoint is verified by the ENGINE-owned scheme its `signatureConfig` names (#1596). A
|
|
13
|
+
// provider that verified its own notifications would put the one fail-closed decision of the inbound
|
|
14
|
+
// path in vendor code, where nothing checks it.
|
|
15
|
+
// ===============================================================
|
|
16
|
+
/**
|
|
17
|
+
* One authentication method's result, as a receiving server records it in `Authentication-Results`.
|
|
18
|
+
*
|
|
19
|
+
* The union of the results the three methods define, so one vocabulary serves SPF, DKIM and DMARC.
|
|
20
|
+
* Two members go beyond what a DMARC result can be — `SOFTFAIL` (SPF only) and `POLICY` (DKIM and
|
|
21
|
+
* SPF) — and are here because mapping them onto a neighbour would record a result the receiver did
|
|
22
|
+
* not report: a softfail is neither a fail nor neutral.
|
|
23
|
+
*
|
|
24
|
+
* spec-cite: RFC 8601 §2.7.1 (DKIM results: none, pass, fail, policy, neutral, temperror, permerror)
|
|
25
|
+
* and §2.7.2 (SPF results: none, pass, fail, softfail, neutral, temperror, permerror, plus policy
|
|
26
|
+
* from §2.4); DMARC results per RFC 7489 §11.2 (none, pass, fail, temperror, permerror). Fetched 2026-09-27.
|
|
27
|
+
*/
|
|
28
|
+
export var EmailAuthenticationVerdict;
|
|
29
|
+
(function (EmailAuthenticationVerdict) {
|
|
30
|
+
EmailAuthenticationVerdict["PASS"] = "pass";
|
|
31
|
+
EmailAuthenticationVerdict["FAIL"] = "fail";
|
|
32
|
+
EmailAuthenticationVerdict["SOFTFAIL"] = "softfail";
|
|
33
|
+
EmailAuthenticationVerdict["NEUTRAL"] = "neutral";
|
|
34
|
+
EmailAuthenticationVerdict["NONE"] = "none";
|
|
35
|
+
EmailAuthenticationVerdict["POLICY"] = "policy";
|
|
36
|
+
EmailAuthenticationVerdict["TEMPERROR"] = "temperror";
|
|
37
|
+
EmailAuthenticationVerdict["PERMERROR"] = "permerror";
|
|
38
|
+
})(EmailAuthenticationVerdict || (EmailAuthenticationVerdict = {}));
|
|
39
|
+
/**
|
|
40
|
+
* What the receiving provider concluded about a message's origin.
|
|
41
|
+
*
|
|
42
|
+
* `dmarcAligned` is kept beside the DMARC verdict rather than folded into it because it is the fact
|
|
43
|
+
* sender assurance is built on: DMARC authenticates the `From` DOMAIN by requiring that it align with
|
|
44
|
+
* an identifier SPF or DKIM authenticated. A provider that reports DMARC `pass` has already required
|
|
45
|
+
* alignment, so for most vendors `dmarcAligned` equals `dmarc === PASS`; it is a separate field so a
|
|
46
|
+
* vendor that reports the two independently is not forced to invent one from the other.
|
|
47
|
+
*/
|
|
48
|
+
export const StandardInboundEmail_AuthenticationSchema = z.object({
|
|
49
|
+
spf: z.enum(EmailAuthenticationVerdict),
|
|
50
|
+
dkim: z.enum(EmailAuthenticationVerdict),
|
|
51
|
+
dmarc: z.enum(EmailAuthenticationVerdict),
|
|
52
|
+
dmarcAligned: z.boolean(),
|
|
53
|
+
});
|
|
54
|
+
export const StandardInboundEmail_AddressSchema = z.object({
|
|
55
|
+
address: z.string().min(1),
|
|
56
|
+
name: z.string().optional(),
|
|
57
|
+
});
|
|
58
|
+
/** How a MIME part asks to be presented (`Content-Disposition`). spec-cite: RFC 2183 §2.1 (`inline`) and §2.2 (`attachment`). */
|
|
59
|
+
export var EmailAttachmentDisposition;
|
|
60
|
+
(function (EmailAttachmentDisposition) {
|
|
61
|
+
EmailAttachmentDisposition["ATTACHMENT"] = "attachment";
|
|
62
|
+
EmailAttachmentDisposition["INLINE"] = "inline";
|
|
63
|
+
})(EmailAttachmentDisposition || (EmailAttachmentDisposition = {}));
|
|
64
|
+
/** One attachment as the provider describes it. The bytes are fetched through `openAttachment`, never inlined. */
|
|
65
|
+
export const StandardInboundEmail_AttachmentSchema = z.object({
|
|
66
|
+
/** Opaque to the engine; handed back to `openAttachment`. */
|
|
67
|
+
ref: z.string().min(1),
|
|
68
|
+
filename: z.string(),
|
|
69
|
+
contentType: z.string(),
|
|
70
|
+
sizeBytes: z.number().int().nonnegative(),
|
|
71
|
+
/** The `Content-ID` of an inline part, without angle brackets. */
|
|
72
|
+
contentId: z.string().optional(),
|
|
73
|
+
disposition: z.enum(EmailAttachmentDisposition).optional(),
|
|
74
|
+
});
|
|
75
|
+
/**
|
|
76
|
+
* What a provider's notification says, parsed. Small on purpose: a notification tells the engine
|
|
77
|
+
* THAT a message arrived and where to fetch it, and nothing past this point trusts it for more.
|
|
78
|
+
*/
|
|
79
|
+
export const StandardInboundEmail_NotificationSchema = z.object({
|
|
80
|
+
/** The provider's id for the message — what `fetchMessage` takes, and the dedup key of the channel delivery. */
|
|
81
|
+
providerMessageId: z.string().min(1),
|
|
82
|
+
/** The addresses the message was delivered FOR (the SMTP envelope recipients), which routing reads. */
|
|
83
|
+
receivedFor: z.array(z.string().min(1)).min(1),
|
|
84
|
+
receivedAt: z.coerce.date(),
|
|
85
|
+
});
|
|
86
|
+
/**
|
|
87
|
+
* One received message, provider-neutral.
|
|
88
|
+
*
|
|
89
|
+
* The threading headers are separated out because the engine correlates threads from them;
|
|
90
|
+
* `headers` carries the rest, for a channel record that chooses to keep an allow-listed subset.
|
|
91
|
+
*/
|
|
92
|
+
export const StandardInboundEmail_MessageSchema = z.object({
|
|
93
|
+
providerMessageId: z.string().min(1),
|
|
94
|
+
/** The RFC 5322 `Message-ID`, angle brackets included, or absent when the sender set none. */
|
|
95
|
+
messageId: z.string().optional(),
|
|
96
|
+
inReplyTo: z.string().optional(),
|
|
97
|
+
references: z.array(z.string()).default([]),
|
|
98
|
+
from: StandardInboundEmail_AddressSchema,
|
|
99
|
+
to: z.array(StandardInboundEmail_AddressSchema).default([]),
|
|
100
|
+
cc: z.array(StandardInboundEmail_AddressSchema).default([]),
|
|
101
|
+
replyTo: StandardInboundEmail_AddressSchema.optional(),
|
|
102
|
+
receivedFor: z.array(z.string().min(1)).min(1),
|
|
103
|
+
subject: z.string().default(""),
|
|
104
|
+
textBody: z.string().optional(),
|
|
105
|
+
htmlBody: z.string().optional(),
|
|
106
|
+
headers: z.record(z.string(), z.string()).default({}),
|
|
107
|
+
authentication: StandardInboundEmail_AuthenticationSchema,
|
|
108
|
+
attachments: z.array(StandardInboundEmail_AttachmentSchema).default([]),
|
|
109
|
+
sizeBytes: z.number().int().nonnegative().optional(),
|
|
110
|
+
receivedAt: z.coerce.date(),
|
|
111
|
+
/**
|
|
112
|
+
* Where the ORIGINAL message bytes are, when the provider keeps them (#1600). Opaque to the engine; handed
|
|
113
|
+
* to `openRaw`. Absent when the provider offers no raw copy — the engine then keeps no raw MIME.
|
|
114
|
+
*/
|
|
115
|
+
rawRef: z.string().min(1).optional(),
|
|
116
|
+
});
|
|
117
|
+
// ===============================================================
|
|
118
|
+
// Receiving domains (#1600)
|
|
119
|
+
// ===============================================================
|
|
120
|
+
/** Where a domain stands AT THE PROVIDER — distinct from the organization's own status, which also records ownership proof. */
|
|
121
|
+
export var EmailProviderDomainStatus;
|
|
122
|
+
(function (EmailProviderDomainStatus) {
|
|
123
|
+
/** The provider has not verified the domain's records yet (not started, pending, or a temporary failure it will retry). */
|
|
124
|
+
EmailProviderDomainStatus["PENDING"] = "pending";
|
|
125
|
+
/** The provider verified the domain's records. */
|
|
126
|
+
EmailProviderDomainStatus["VERIFIED"] = "verified";
|
|
127
|
+
/** The provider gave up verifying the records. */
|
|
128
|
+
EmailProviderDomainStatus["FAILED"] = "failed";
|
|
129
|
+
})(EmailProviderDomainStatus || (EmailProviderDomainStatus = {}));
|
|
130
|
+
/** One DNS record the provider asks to be published. */
|
|
131
|
+
export const StandardEmailDomain_DnsRecordSchema = z.object({
|
|
132
|
+
/** What it is for, as the provider names it (DKIM, SPF, MX, Receiving…). */
|
|
133
|
+
purpose: z.string(),
|
|
134
|
+
type: z.string(),
|
|
135
|
+
name: z.string(),
|
|
136
|
+
value: z.string(),
|
|
137
|
+
priority: z.number().int().optional(),
|
|
138
|
+
status: z.string().optional(),
|
|
139
|
+
});
|
|
140
|
+
/** A domain as the provider describes it. */
|
|
141
|
+
export const StandardEmailDomainSchema = z.object({
|
|
142
|
+
providerDomainId: z.string().min(1),
|
|
143
|
+
name: z.string().min(1),
|
|
144
|
+
status: z.enum(EmailProviderDomainStatus),
|
|
145
|
+
sending: z.boolean(),
|
|
146
|
+
receiving: z.boolean(),
|
|
147
|
+
records: z.array(StandardEmailDomain_DnsRecordSchema).default([]),
|
|
148
|
+
});
|
|
149
|
+
/**
|
|
150
|
+
* The methods a provider's `path` request may use. A `url` request (a signed download link) is always a GET.
|
|
151
|
+
* Absent means GET.
|
|
152
|
+
*/
|
|
153
|
+
export var EmailProviderHttpMethod;
|
|
154
|
+
(function (EmailProviderHttpMethod) {
|
|
155
|
+
EmailProviderHttpMethod["GET"] = "GET";
|
|
156
|
+
EmailProviderHttpMethod["POST"] = "POST";
|
|
157
|
+
EmailProviderHttpMethod["PATCH"] = "PATCH";
|
|
158
|
+
EmailProviderHttpMethod["DELETE"] = "DELETE";
|
|
159
|
+
})(EmailProviderHttpMethod || (EmailProviderHttpMethod = {}));
|
|
160
|
+
//# sourceMappingURL=email-inbound.standard-interface.schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-inbound.standard-interface.schemas.js","sourceRoot":"","sources":["../../../../src/protocols/email-inbound.standard-interface.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\n// ===============================================================\n// Standard Inbound Email Interface (#1630)\n// --------\n// The canonical shape of a message an EMAIL_INBOUND provider RECEIVED for the application, and the\n// three calls the engine makes on the provider to get it. Provider-agnostic: a vendor's module maps\n// its own notification and message payloads onto these schemas, and nothing past that mapping ever\n// sees a vendor field.\n//\n// There is deliberately NO `verify` here. The notification reaches the application through the\n// provider's `WEBHOOK_ORIGINATOR` endpoint (the `inbound-email` key, capability `EMAIL_INBOUND`), and\n// that endpoint is verified by the ENGINE-owned scheme its `signatureConfig` names (#1596). A\n// provider that verified its own notifications would put the one fail-closed decision of the inbound\n// path in vendor code, where nothing checks it.\n// ===============================================================\n\n/**\n * One authentication method's result, as a receiving server records it in `Authentication-Results`.\n *\n * The union of the results the three methods define, so one vocabulary serves SPF, DKIM and DMARC.\n * Two members go beyond what a DMARC result can be — `SOFTFAIL` (SPF only) and `POLICY` (DKIM and\n * SPF) — and are here because mapping them onto a neighbour would record a result the receiver did\n * not report: a softfail is neither a fail nor neutral.\n *\n * spec-cite: RFC 8601 §2.7.1 (DKIM results: none, pass, fail, policy, neutral, temperror, permerror)\n * and §2.7.2 (SPF results: none, pass, fail, softfail, neutral, temperror, permerror, plus policy\n * from §2.4); DMARC results per RFC 7489 §11.2 (none, pass, fail, temperror, permerror). Fetched 2026-09-27.\n */\nexport enum EmailAuthenticationVerdict {\n PASS = \"pass\",\n FAIL = \"fail\",\n SOFTFAIL = \"softfail\",\n NEUTRAL = \"neutral\",\n NONE = \"none\",\n POLICY = \"policy\",\n TEMPERROR = \"temperror\",\n PERMERROR = \"permerror\",\n}\n\n/**\n * What the receiving provider concluded about a message's origin.\n *\n * `dmarcAligned` is kept beside the DMARC verdict rather than folded into it because it is the fact\n * sender assurance is built on: DMARC authenticates the `From` DOMAIN by requiring that it align with\n * an identifier SPF or DKIM authenticated. A provider that reports DMARC `pass` has already required\n * alignment, so for most vendors `dmarcAligned` equals `dmarc === PASS`; it is a separate field so a\n * vendor that reports the two independently is not forced to invent one from the other.\n */\nexport const StandardInboundEmail_AuthenticationSchema = z.object({\n spf: z.enum(EmailAuthenticationVerdict),\n dkim: z.enum(EmailAuthenticationVerdict),\n dmarc: z.enum(EmailAuthenticationVerdict),\n dmarcAligned: z.boolean(),\n});\n\nexport type StandardInboundEmail_Authentication = z.infer<typeof StandardInboundEmail_AuthenticationSchema>;\n\nexport const StandardInboundEmail_AddressSchema = z.object({\n address: z.string().min(1),\n name: z.string().optional(),\n});\n\nexport type StandardInboundEmail_Address = z.infer<typeof StandardInboundEmail_AddressSchema>;\n\n/** How a MIME part asks to be presented (`Content-Disposition`). spec-cite: RFC 2183 §2.1 (`inline`) and §2.2 (`attachment`). */\nexport enum EmailAttachmentDisposition {\n ATTACHMENT = \"attachment\",\n INLINE = \"inline\",\n}\n\n/** One attachment as the provider describes it. The bytes are fetched through `openAttachment`, never inlined. */\nexport const StandardInboundEmail_AttachmentSchema = z.object({\n /** Opaque to the engine; handed back to `openAttachment`. */\n ref: z.string().min(1),\n filename: z.string(),\n contentType: z.string(),\n sizeBytes: z.number().int().nonnegative(),\n /** The `Content-ID` of an inline part, without angle brackets. */\n contentId: z.string().optional(),\n disposition: z.enum(EmailAttachmentDisposition).optional(),\n});\n\nexport type StandardInboundEmail_Attachment = z.infer<typeof StandardInboundEmail_AttachmentSchema>;\n\n/**\n * What a provider's notification says, parsed. Small on purpose: a notification tells the engine\n * THAT a message arrived and where to fetch it, and nothing past this point trusts it for more.\n */\nexport const StandardInboundEmail_NotificationSchema = z.object({\n /** The provider's id for the message — what `fetchMessage` takes, and the dedup key of the channel delivery. */\n providerMessageId: z.string().min(1),\n /** The addresses the message was delivered FOR (the SMTP envelope recipients), which routing reads. */\n receivedFor: z.array(z.string().min(1)).min(1),\n receivedAt: z.coerce.date(),\n});\n\nexport type StandardInboundEmail_Notification = z.infer<typeof StandardInboundEmail_NotificationSchema>;\n\n/**\n * One received message, provider-neutral.\n *\n * The threading headers are separated out because the engine correlates threads from them;\n * `headers` carries the rest, for a channel record that chooses to keep an allow-listed subset.\n */\nexport const StandardInboundEmail_MessageSchema = z.object({\n providerMessageId: z.string().min(1),\n /** The RFC 5322 `Message-ID`, angle brackets included, or absent when the sender set none. */\n messageId: z.string().optional(),\n inReplyTo: z.string().optional(),\n references: z.array(z.string()).default([]),\n from: StandardInboundEmail_AddressSchema,\n to: z.array(StandardInboundEmail_AddressSchema).default([]),\n cc: z.array(StandardInboundEmail_AddressSchema).default([]),\n replyTo: StandardInboundEmail_AddressSchema.optional(),\n receivedFor: z.array(z.string().min(1)).min(1),\n subject: z.string().default(\"\"),\n textBody: z.string().optional(),\n htmlBody: z.string().optional(),\n headers: z.record(z.string(), z.string()).default({}),\n authentication: StandardInboundEmail_AuthenticationSchema,\n attachments: z.array(StandardInboundEmail_AttachmentSchema).default([]),\n sizeBytes: z.number().int().nonnegative().optional(),\n receivedAt: z.coerce.date(),\n /**\n * Where the ORIGINAL message bytes are, when the provider keeps them (#1600). Opaque to the engine; handed\n * to `openRaw`. Absent when the provider offers no raw copy — the engine then keeps no raw MIME.\n */\n rawRef: z.string().min(1).optional(),\n});\n\nexport type StandardInboundEmail_Message = z.infer<typeof StandardInboundEmail_MessageSchema>;\n\n/** The bytes of one attachment. */\nexport interface StandardInboundEmail_OpenedAttachment {\n readonly bytes: Uint8Array;\n readonly contentType: string;\n readonly filename: string;\n}\n\n/** The original bytes of a message, exactly as the provider serves them. */\nexport interface StandardInboundEmail_OpenedRaw {\n readonly bytes: Uint8Array;\n}\n\n// ===============================================================\n// Receiving domains (#1600)\n// ===============================================================\n\n/** Where a domain stands AT THE PROVIDER — distinct from the organization's own status, which also records ownership proof. */\nexport enum EmailProviderDomainStatus {\n /** The provider has not verified the domain's records yet (not started, pending, or a temporary failure it will retry). */\n PENDING = \"pending\",\n /** The provider verified the domain's records. */\n VERIFIED = \"verified\",\n /** The provider gave up verifying the records. */\n FAILED = \"failed\",\n}\n\n/** One DNS record the provider asks to be published. */\nexport const StandardEmailDomain_DnsRecordSchema = z.object({\n /** What it is for, as the provider names it (DKIM, SPF, MX, Receiving…). */\n purpose: z.string(),\n type: z.string(),\n name: z.string(),\n value: z.string(),\n priority: z.number().int().optional(),\n status: z.string().optional(),\n});\n\nexport type StandardEmailDomain_DnsRecord = z.infer<typeof StandardEmailDomain_DnsRecordSchema>;\n\n/** A domain as the provider describes it. */\nexport const StandardEmailDomainSchema = z.object({\n providerDomainId: z.string().min(1),\n name: z.string().min(1),\n status: z.enum(EmailProviderDomainStatus),\n sending: z.boolean(),\n receiving: z.boolean(),\n records: z.array(StandardEmailDomain_DnsRecordSchema).default([]),\n});\n\nexport type StandardEmailDomain = z.infer<typeof StandardEmailDomainSchema>;\n\n/**\n * What an EMAIL_INBOUND provider implements to host an organization's own domain. Every tenant shares one\n * provider account, so the ENGINE proves the organization owns the domain before it ever calls `createDomain`.\n */\nexport interface StandardEmailDomains_Interface {\n createDomain(input: { readonly name: string; readonly sending: boolean; readonly receiving: boolean }): Promise<StandardEmailDomain>;\n getDomain(providerDomainId: string): Promise<StandardEmailDomain | null>;\n /** Start the provider's (asynchronous) verification. */\n verifyDomain(providerDomainId: string): Promise<void>;\n deleteDomain(providerDomainId: string): Promise<void>;\n}\n\n/**\n * What an EMAIL_INBOUND provider implements. Built by the provider module's adapter factory with the\n * credential the engine resolved, exactly as a billing adapter is — the module never reads a secret\n * itself.\n */\nexport interface StandardInboundEmail_Interface {\n /** Map the verified notification body onto the standard notification. Pure; refuses an unknown shape by throwing. */\n parseNotification(body: unknown): StandardInboundEmail_Notification;\n /** Fetch the whole message the notification announced. */\n fetchMessage(providerMessageId: string): Promise<StandardInboundEmail_Message>;\n /** Fetch one attachment's bytes, by the `ref` the message listed. */\n openAttachment(ref: string): Promise<StandardInboundEmail_OpenedAttachment>;\n /** Fetch the original message bytes, by the message's `rawRef`. */\n openRaw(rawRef: string): Promise<StandardInboundEmail_OpenedRaw>;\n}\n\n// ===============================================================\n// What a provider module DECLARES (pure functions; the engine owns the transport)\n// ===============================================================\n\n/**\n * One request a provider module asks the engine to make on its behalf.\n *\n * `path` is appended to the contract's `baseUrl`. A provider that serves bytes from ANOTHER host (a\n * signed download URL) returns `url` instead, and the engine admits it only against the hosts the\n * contract declares — a provider-supplied URL is never fetched merely because a provider named it.\n */\nexport type InboundEmailProviderRequest =\n | { readonly path: string; readonly method?: EmailProviderHttpMethod; readonly jsonBody?: unknown; readonly headers?: Readonly<Record<string, string>> }\n | { readonly url: string; readonly headers?: Readonly<Record<string, string>> };\n\n/**\n * The methods a provider's `path` request may use. A `url` request (a signed download link) is always a GET.\n * Absent means GET.\n */\nexport enum EmailProviderHttpMethod {\n GET = \"GET\",\n POST = \"POST\",\n PATCH = \"PATCH\",\n DELETE = \"DELETE\",\n}\n\n/** A provider's HTTP answer, as the engine hands it to the provider's parser. */\nexport interface InboundEmailProviderResponseInput {\n readonly status: number;\n /** The JSON body, or `undefined` when the answer was not JSON. */\n readonly body: unknown;\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { ExternalProvider_ExchangeProtocol_Configuration_Base, ExternalProvider_ExchangeProtocol_Kind, ExternalProvider_ExchangeProtocol_Profile_Base } from "../core/commons.external-connectors-models.schemas";
|
|
3
2
|
import { ExternalProvider_OperationDefinition_Base } from "../core/operations.external-connectors-models.schemas";
|
|
4
3
|
/**
|
|
5
4
|
* The type of email operation - transactional vs marketing have different
|
|
@@ -122,44 +121,6 @@ export declare const EmailProvider_AttachmentSchema: z.ZodObject<{
|
|
|
122
121
|
contentId: z.ZodOptional<z.ZodString>;
|
|
123
122
|
}, z.core.$strip>;
|
|
124
123
|
export type EmailProvider_Attachment = z.infer<typeof EmailProvider_AttachmentSchema>;
|
|
125
|
-
export type EmailProvider_Profile = ExternalProvider_ExchangeProtocol_Profile_Base & {
|
|
126
|
-
displayName?: string;
|
|
127
|
-
baseURL: string;
|
|
128
|
-
apiVersion?: string;
|
|
129
|
-
smtpServer?: EmailProvider_SMTP_ServerProfile;
|
|
130
|
-
capabilities: EmailProvider_Capability[];
|
|
131
|
-
supportedEmailTypes: EmailProvider_EmailType[];
|
|
132
|
-
deliveryMethods: EmailProvider_DeliveryMethod[];
|
|
133
|
-
limits: {
|
|
134
|
-
maxRecipientsPerRequest?: number;
|
|
135
|
-
maxBatchSize?: number;
|
|
136
|
-
maxAttachmentSizeMB?: number;
|
|
137
|
-
maxEmailSizeKB?: number;
|
|
138
|
-
rateLimit?: {
|
|
139
|
-
requests: number;
|
|
140
|
-
period: "second" | "minute" | "hour" | "day";
|
|
141
|
-
};
|
|
142
|
-
};
|
|
143
|
-
};
|
|
144
|
-
export type EmailProvider_Configuration = ExternalProvider_ExchangeProtocol_Configuration_Base & {
|
|
145
|
-
preferredDeliveryMethod?: EmailProvider_DeliveryMethod;
|
|
146
|
-
smtpCredentials?: {
|
|
147
|
-
username: string;
|
|
148
|
-
passwordSecretRef: string;
|
|
149
|
-
};
|
|
150
|
-
defaultFromAddress?: EmailProvider_Address;
|
|
151
|
-
defaultReplyTo?: EmailProvider_Address;
|
|
152
|
-
openTrackingEnabled?: boolean;
|
|
153
|
-
clickTrackingEnabled?: boolean;
|
|
154
|
-
webhookConfig?: {
|
|
155
|
-
url: string;
|
|
156
|
-
secretRef?: string;
|
|
157
|
-
events?: EmailProvider_DeliveryStatus[];
|
|
158
|
-
};
|
|
159
|
-
sandboxMode?: boolean;
|
|
160
|
-
ipPoolName?: string;
|
|
161
|
-
defaultTags?: string[];
|
|
162
|
-
};
|
|
163
124
|
export declare const EmailProvider_SendEmailInputSchema: z.ZodObject<{
|
|
164
125
|
to: z.ZodArray<z.ZodObject<{
|
|
165
126
|
email: z.ZodEmail;
|
|
@@ -297,8 +258,8 @@ export declare const EmailProvider_CampaignOutputSchema: z.ZodObject<{
|
|
|
297
258
|
id: z.ZodString;
|
|
298
259
|
status: z.ZodEnum<{
|
|
299
260
|
cancelled: "cancelled";
|
|
300
|
-
draft: "draft";
|
|
301
261
|
sent: "sent";
|
|
262
|
+
draft: "draft";
|
|
302
263
|
scheduled: "scheduled";
|
|
303
264
|
sending: "sending";
|
|
304
265
|
}>;
|
|
@@ -351,20 +312,4 @@ export type EmailProvider_OperationDefinition = ExternalProvider_OperationDefini
|
|
|
351
312
|
supportedDeliveryMethods: EmailProvider_DeliveryMethod[];
|
|
352
313
|
requiredCapabilities?: EmailProvider_Capability[];
|
|
353
314
|
};
|
|
354
|
-
export declare const EmailProvider_StatusSchema: z.ZodObject<{
|
|
355
|
-
status: z.ZodEnum<typeof import("..").ExternalProvider_Status>;
|
|
356
|
-
lastCheckedAt: z.ZodString;
|
|
357
|
-
errorReason: z.ZodOptional<z.ZodString>;
|
|
358
|
-
protocolKind: z.ZodLiteral<ExternalProvider_ExchangeProtocol_Kind.EMAIL_PROVIDER>;
|
|
359
|
-
apiConnected: z.ZodOptional<z.ZodBoolean>;
|
|
360
|
-
smtpConnected: z.ZodOptional<z.ZodBoolean>;
|
|
361
|
-
domainVerified: z.ZodOptional<z.ZodBoolean>;
|
|
362
|
-
spfValid: z.ZodOptional<z.ZodBoolean>;
|
|
363
|
-
dkimValid: z.ZodOptional<z.ZodBoolean>;
|
|
364
|
-
dmarcValid: z.ZodOptional<z.ZodBoolean>;
|
|
365
|
-
rateLimitRemaining: z.ZodOptional<z.ZodNumber>;
|
|
366
|
-
rateLimitResetAt: z.ZodOptional<z.ZodISODateTime>;
|
|
367
|
-
senderReputation: z.ZodOptional<z.ZodNumber>;
|
|
368
|
-
}, z.core.$strip>;
|
|
369
|
-
export type EmailProvider_Status = z.infer<typeof EmailProvider_StatusSchema>;
|
|
370
315
|
//# sourceMappingURL=email.external-connectors-models.schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.external-connectors-models.schemas.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"email.external-connectors-models.schemas.d.ts","sourceRoot":"","sources":["../../../../src/protocols/email.external-connectors-models.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { ExternalProvider_ExchangeProtocol_Kind, ExternalProvider_ExchangeProtocol_Status_BaseSchema } from "../core/commons.external-connectors-models.schemas.js";
|
|
3
2
|
import { ExternalProvider_OperationContextSchema } from "../core/operations.external-connectors-models.schemas.js";
|
|
4
3
|
//===============================================================
|
|
5
4
|
// Email Provider
|
|
@@ -346,23 +345,4 @@ export const EmailProvider_WebhookEventSchema = z.object({
|
|
|
346
345
|
// Original tags
|
|
347
346
|
tags: z.array(z.string()).optional(),
|
|
348
347
|
});
|
|
349
|
-
// ===============================================================
|
|
350
|
-
// Email Provider Status Schema
|
|
351
|
-
// ===============================================================
|
|
352
|
-
export const EmailProvider_StatusSchema = ExternalProvider_ExchangeProtocol_Status_BaseSchema.extend({
|
|
353
|
-
protocolKind: z.literal(ExternalProvider_ExchangeProtocol_Kind.EMAIL_PROVIDER),
|
|
354
|
-
// API connectivity
|
|
355
|
-
apiConnected: z.boolean().optional(),
|
|
356
|
-
smtpConnected: z.boolean().optional(),
|
|
357
|
-
// Domain status
|
|
358
|
-
domainVerified: z.boolean().optional(),
|
|
359
|
-
spfValid: z.boolean().optional(),
|
|
360
|
-
dkimValid: z.boolean().optional(),
|
|
361
|
-
dmarcValid: z.boolean().optional(),
|
|
362
|
-
// Rate limit
|
|
363
|
-
rateLimitRemaining: z.number().optional(),
|
|
364
|
-
rateLimitResetAt: z.iso.datetime().optional(),
|
|
365
|
-
// Reputation (if provider exposes it)
|
|
366
|
-
senderReputation: z.number().min(0).max(100).optional(),
|
|
367
|
-
});
|
|
368
348
|
//# sourceMappingURL=email.external-connectors-models.schemas.js.map
|