@serve.zone/interfaces 30.12.0 → 30.14.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/changelog.md +25 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/coremail.d.ts +67 -0
- package/dist_ts/data/coremail.js +1 -1
- package/dist_ts/data/coremail.runtime.d.ts +19 -1
- package/dist_ts/data/coremail.runtime.js +191 -4
- package/dist_ts/data/mail.d.ts +72 -4
- package/dist_ts/data/secret.d.ts +2 -2
- package/dist_ts/data/secret.js +5 -4
- package/dist_ts/data/service.d.ts +8 -2
- package/dist_ts/data/settings.d.ts +27 -0
- package/dist_ts/data/settings.js +10 -1
- package/dist_ts/requests/coremail.admin.d.ts +67 -0
- package/dist_ts/requests/coremail.admin.js +2 -0
- package/dist_ts/requests/coremail.d.ts +44 -1
- package/dist_ts/requests/index.d.ts +2 -1
- package/dist_ts/requests/index.js +3 -2
- package/dist_ts/requests/mail.d.ts +50 -0
- package/package.json +2 -2
- package/readme.md +71 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/coremail.runtime.ts +278 -2
- package/ts/data/coremail.ts +72 -0
- package/ts/data/mail.ts +96 -4
- package/ts/data/secret.ts +6 -3
- package/ts/data/service.ts +9 -2
- package/ts/data/settings.ts +27 -0
- package/ts/requests/coremail.admin.ts +83 -0
- package/ts/requests/coremail.ts +48 -0
- package/ts/requests/index.ts +2 -0
- package/ts/requests/mail.ts +62 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as plugins from '../plugins.js';
|
|
2
|
-
import type { ICoreMailEnvelope, ICoreMailInboundDeliveryPage, ICoreMailDownloadGrant, ICoreMailGatewayMessageDescriptor, ICoreMailGatewayOutboundStatus, ICoreMailInboundDelivery, ICoreMailOutboundMessageDescriptor, ICoreMailRecipientResolution, ICoreMailReconciliationStatus, ICoreMailReplicaIdentity, ICoreMailSubmission, ICoreMailUploadGrant, TCoreMailInboundAckOutcome, TCoreMailSha256, TCoreMailWorkloadOperation } from '../data/coremail.js';
|
|
2
|
+
import type { ICoreMailEnvelope, ICoreMailInboundDeliveryPage, ICoreMailDownloadGrant, ICoreMailGatewayMessageDescriptor, ICoreMailGatewayOutboundStatus, ICoreMailInboundDelivery, ICoreMailOutboundMessageDescriptor, ICoreMailRecipientResolution, ICoreMailReconciliationStatus, ICoreMailReplicaIdentity, ICoreMailServiceMailStatistics, ICoreMailSubmission, ICoreMailUploadGrant, TCoreMailInboundAckOutcome, TCoreMailSha256, TCoreMailWorkloadOperation } from '../data/coremail.js';
|
|
3
3
|
import type { IMailConnectionInfo } from '../data/mail.js';
|
|
4
4
|
export interface IReq_CoreMailAuthenticateWorkload extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CoreMailAuthenticateWorkload> {
|
|
5
5
|
method: 'coreMailAuthenticateWorkload';
|
|
@@ -164,6 +164,29 @@ export interface IReq_CoreMailGetReconciliationStatus extends plugins.typedreque
|
|
|
164
164
|
status: ICoreMailReconciliationStatus;
|
|
165
165
|
};
|
|
166
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Control-session read of per-service mail counters. Authority comes from the
|
|
169
|
+
* authenticated control session; the request carries no tenant or binding
|
|
170
|
+
* authority of its own.
|
|
171
|
+
*/
|
|
172
|
+
export interface IReq_CoreMailGetServiceMailStatistics extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CoreMailGetServiceMailStatistics> {
|
|
173
|
+
method: 'coreMailGetServiceMailStatistics';
|
|
174
|
+
request: {
|
|
175
|
+
/** Inclusive first UTC calendar day, `YYYY-MM-DD`. */
|
|
176
|
+
fromDayUtc: string;
|
|
177
|
+
/** Inclusive last UTC calendar day, `YYYY-MM-DD`. */
|
|
178
|
+
toDayUtc: string;
|
|
179
|
+
/** Optional service filter. Omitted means every service known to this CoreMail. */
|
|
180
|
+
serviceIds?: string[];
|
|
181
|
+
/** Opaque CoreMail-owned composite cursor. */
|
|
182
|
+
cursor?: string;
|
|
183
|
+
limit: number;
|
|
184
|
+
};
|
|
185
|
+
response: {
|
|
186
|
+
statistics: ICoreMailServiceMailStatistics[];
|
|
187
|
+
nextCursor?: string;
|
|
188
|
+
};
|
|
189
|
+
}
|
|
167
190
|
export interface IReq_CoreMailGatewayAuthenticate extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CoreMailGatewayAuthenticate> {
|
|
168
191
|
method: 'coreMailGatewayAuthenticate';
|
|
169
192
|
request: {
|
|
@@ -179,6 +202,13 @@ export interface IReq_CoreMailGatewayAuthenticate extends plugins.typedrequestIn
|
|
|
179
202
|
coreMailTransferOrigin: string;
|
|
180
203
|
};
|
|
181
204
|
}
|
|
205
|
+
/**
|
|
206
|
+
* CoreMail binds every issued routing handle to a digest of the exact
|
|
207
|
+
* normalized `envelope` and `source` sent here. The following
|
|
208
|
+
* `coreMailGatewayPrepareInboundHandoff` call must therefore resend
|
|
209
|
+
* byte-identical values: the full `rcptTo` set in the same order, the same
|
|
210
|
+
* `mailFrom`, and the same connection source fields.
|
|
211
|
+
*/
|
|
182
212
|
export interface IReq_CoreMailGatewayResolveRecipients extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CoreMailGatewayResolveRecipients> {
|
|
183
213
|
method: 'coreMailGatewayResolveRecipients';
|
|
184
214
|
request: {
|
|
@@ -190,6 +220,13 @@ export interface IReq_CoreMailGatewayResolveRecipients extends plugins.typedrequ
|
|
|
190
220
|
resolutions: ICoreMailRecipientResolution[];
|
|
191
221
|
};
|
|
192
222
|
}
|
|
223
|
+
/**
|
|
224
|
+
* The handoff is validated against the routing handles issued by
|
|
225
|
+
* `coreMailGatewayResolveRecipients`. `message.envelope` and `source` must be
|
|
226
|
+
* byte-identical to the resolve-time values, including the full `rcptTo` set in
|
|
227
|
+
* the same order, because CoreMail recomputes the envelope digest the handles
|
|
228
|
+
* are bound to.
|
|
229
|
+
*/
|
|
193
230
|
export interface IReq_CoreMailGatewayPrepareInboundHandoff extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CoreMailGatewayPrepareInboundHandoff> {
|
|
194
231
|
method: 'coreMailGatewayPrepareInboundHandoff';
|
|
195
232
|
request: {
|
|
@@ -246,6 +283,12 @@ export interface IReq_CoreMailGatewayCompleteOutboundHandoff extends plugins.typ
|
|
|
246
283
|
replayed: boolean;
|
|
247
284
|
};
|
|
248
285
|
}
|
|
286
|
+
/**
|
|
287
|
+
* Status polling for one accepted transport message. `status.updatedAt` must be
|
|
288
|
+
* monotonic per `transportMessageId`. A `transportMessageId` that is
|
|
289
|
+
* permanently unknown to the gateway must be answered with a terminal `failed`
|
|
290
|
+
* status rather than an error, because CoreMail retries errors indefinitely.
|
|
291
|
+
*/
|
|
249
292
|
export interface IReq_CoreMailGatewayGetOutboundStatus extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CoreMailGatewayGetOutboundStatus> {
|
|
250
293
|
method: 'coreMailGatewayGetOutboundStatus';
|
|
251
294
|
request: {
|
|
@@ -7,6 +7,7 @@ import * as certificateRequests from './certificate.js';
|
|
|
7
7
|
import * as clusterRequests from './cluster.js';
|
|
8
8
|
import * as configRequests from './config.js';
|
|
9
9
|
import * as coreMailRequests from './coremail.js';
|
|
10
|
+
import * as coreMailAdminRequests from './coremail.admin.js';
|
|
10
11
|
import * as corestoreRequests from './corestore.js';
|
|
11
12
|
import * as deploymentRequests from './deployment.js';
|
|
12
13
|
import * as dnsRequests from './dns.js';
|
|
@@ -34,7 +35,7 @@ import * as statusRequests from './status.js';
|
|
|
34
35
|
import * as taskRequests from './task.js';
|
|
35
36
|
import * as versionRequests from './version.js';
|
|
36
37
|
import * as webPushRequests from './webpush.js';
|
|
37
|
-
export { adminRequests as admin, appStoreRequests as appstore, baremetalRequests as baremetal, baseOsRequests as baseos, backupRequests as backup, certificateRequests as certificate, clusterRequests as cluster, configRequests as config, coreMailRequests as coremail, corestoreRequests as corestore, deploymentRequests as deployment, dnsRequests as dns, domainRequests as domain, externalRegistryRequests as externalRegistry, gatewayRequests as gateway, hostedAppRequests as hostedapp, identityRequests as identity, imageRequests as image, informRequests as inform, logRequests as log, mailRequests as mail, migrationRequests as migration, networkRequests as network, nodeRequests as node, palletRequests as pallet, platformRequests as platform, routingRequests as routing, runtimeSessionRequests as runtimesession, secretRequests as secret, serverRequests as server, serviceRequests as service, settingsRequests as settings, statusRequests as status, taskRequests as task, versionRequests as version, webPushRequests as webpush, };
|
|
38
|
+
export { adminRequests as admin, appStoreRequests as appstore, baremetalRequests as baremetal, baseOsRequests as baseos, backupRequests as backup, certificateRequests as certificate, clusterRequests as cluster, configRequests as config, coreMailRequests as coremail, coreMailAdminRequests as coremailAdmin, corestoreRequests as corestore, deploymentRequests as deployment, dnsRequests as dns, domainRequests as domain, externalRegistryRequests as externalRegistry, gatewayRequests as gateway, hostedAppRequests as hostedapp, identityRequests as identity, imageRequests as image, informRequests as inform, logRequests as log, mailRequests as mail, migrationRequests as migration, networkRequests as network, nodeRequests as node, palletRequests as pallet, platformRequests as platform, routingRequests as routing, runtimeSessionRequests as runtimesession, secretRequests as secret, serverRequests as server, serviceRequests as service, settingsRequests as settings, statusRequests as status, taskRequests as task, versionRequests as version, webPushRequests as webpush, };
|
|
38
39
|
export * from './inform.js';
|
|
39
40
|
export * from './hostedapp.js';
|
|
40
41
|
export * from './mail.js';
|
|
@@ -8,6 +8,7 @@ import * as certificateRequests from './certificate.js';
|
|
|
8
8
|
import * as clusterRequests from './cluster.js';
|
|
9
9
|
import * as configRequests from './config.js';
|
|
10
10
|
import * as coreMailRequests from './coremail.js';
|
|
11
|
+
import * as coreMailAdminRequests from './coremail.admin.js';
|
|
11
12
|
import * as corestoreRequests from './corestore.js';
|
|
12
13
|
import * as deploymentRequests from './deployment.js';
|
|
13
14
|
import * as dnsRequests from './dns.js';
|
|
@@ -35,9 +36,9 @@ import * as statusRequests from './status.js';
|
|
|
35
36
|
import * as taskRequests from './task.js';
|
|
36
37
|
import * as versionRequests from './version.js';
|
|
37
38
|
import * as webPushRequests from './webpush.js';
|
|
38
|
-
export { adminRequests as admin, appStoreRequests as appstore, baremetalRequests as baremetal, baseOsRequests as baseos, backupRequests as backup, certificateRequests as certificate, clusterRequests as cluster, configRequests as config, coreMailRequests as coremail, corestoreRequests as corestore, deploymentRequests as deployment, dnsRequests as dns, domainRequests as domain, externalRegistryRequests as externalRegistry, gatewayRequests as gateway, hostedAppRequests as hostedapp, identityRequests as identity, imageRequests as image, informRequests as inform, logRequests as log, mailRequests as mail, migrationRequests as migration, networkRequests as network, nodeRequests as node, palletRequests as pallet, platformRequests as platform, routingRequests as routing, runtimeSessionRequests as runtimesession, secretRequests as secret, serverRequests as server, serviceRequests as service, settingsRequests as settings, statusRequests as status, taskRequests as task, versionRequests as version, webPushRequests as webpush, };
|
|
39
|
+
export { adminRequests as admin, appStoreRequests as appstore, baremetalRequests as baremetal, baseOsRequests as baseos, backupRequests as backup, certificateRequests as certificate, clusterRequests as cluster, configRequests as config, coreMailRequests as coremail, coreMailAdminRequests as coremailAdmin, corestoreRequests as corestore, deploymentRequests as deployment, dnsRequests as dns, domainRequests as domain, externalRegistryRequests as externalRegistry, gatewayRequests as gateway, hostedAppRequests as hostedapp, identityRequests as identity, imageRequests as image, informRequests as inform, logRequests as log, mailRequests as mail, migrationRequests as migration, networkRequests as network, nodeRequests as node, palletRequests as pallet, platformRequests as platform, routingRequests as routing, runtimeSessionRequests as runtimesession, secretRequests as secret, serverRequests as server, serviceRequests as service, settingsRequests as settings, statusRequests as status, taskRequests as task, versionRequests as version, webPushRequests as webpush, };
|
|
39
40
|
export * from './inform.js';
|
|
40
41
|
export * from './hostedapp.js';
|
|
41
42
|
export * from './mail.js';
|
|
42
43
|
export * from './webpush.js';
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9yZXF1ZXN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEtBQUssYUFBYSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sS0FBSyxpQkFBaUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssY0FBYyxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEtBQUssY0FBYyxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEtBQUssbUJBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxLQUFLLGVBQWUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxLQUFLLGNBQWMsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxLQUFLLGdCQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEtBQUsscUJBQXFCLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxLQUFLLGlCQUFpQixNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxrQkFBa0IsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEtBQUssV0FBVyxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEtBQUssY0FBYyxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEtBQUssd0JBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxLQUFLLGVBQWUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxLQUFLLGlCQUFpQixNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxLQUFLLGFBQWEsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxLQUFLLGNBQWMsTUFBTSxhQUFhLENBQUM7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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
|
+
import type { ICoreMailGatewayPeerDesiredState } from '../data/coremail.js';
|
|
2
3
|
import type { IIdentity } from '../data/user.js';
|
|
3
4
|
import type { IMailAddressBinding, IMailCredentialOneTimeSecret, IMailConnectionInfo, IMailDeliveryJournalEvent, IMailDeliveryStatus, IMailDomainAuthority, IMailEnvelope, IMailInboundMessagePayload, IMailOutboundIdentity, IMailOutboundMessagePayload, IMailRecipientResolution, IMailResourceOwner, IMailSpoolItem, IWorkAppMailBinding, TMailSubmissionErrorCode } from '../data/mail.js';
|
|
4
5
|
export interface IMailControlRequestAuth {
|
|
@@ -89,6 +90,55 @@ export interface IReq_DeleteMailAddressBinding extends plugins.typedrequestInter
|
|
|
89
90
|
message?: string;
|
|
90
91
|
};
|
|
91
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* dcrouter-owned CoreMail gateway peer state.
|
|
95
|
+
*
|
|
96
|
+
* `peer.transferOrigin` must equal the `gateway.coreMailTransferOrigin` carried
|
|
97
|
+
* in that CoreMail service's own desired state. The producer (Cloudly or
|
|
98
|
+
* Onebox) is the single owner of that string: dcrouter never infers it from a
|
|
99
|
+
* socket, Host header, TypedSocket tag, or peer input.
|
|
100
|
+
*/
|
|
101
|
+
export interface IReq_ListCoreMailGatewayPeers extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ListCoreMailGatewayPeers> {
|
|
102
|
+
method: 'listCoreMailGatewayPeers';
|
|
103
|
+
request: {
|
|
104
|
+
auth: IMailControlRequestAuth;
|
|
105
|
+
owner: IMailResourceOwner;
|
|
106
|
+
};
|
|
107
|
+
response: {
|
|
108
|
+
peers: ICoreMailGatewayPeerDesiredState[];
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Creates or replaces one CoreMail gateway peer. On success the accepted peer is
|
|
113
|
+
* returned in its stored form so the producer can compare the exact applied
|
|
114
|
+
* state. `owner` is required (not partial) because a peer is producer-owned
|
|
115
|
+
* provisioning state, never a filtered listing.
|
|
116
|
+
*/
|
|
117
|
+
export interface IReq_SyncCoreMailGatewayPeer extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_SyncCoreMailGatewayPeer> {
|
|
118
|
+
method: 'syncCoreMailGatewayPeer';
|
|
119
|
+
request: {
|
|
120
|
+
auth: IMailControlRequestAuth;
|
|
121
|
+
owner: IMailResourceOwner;
|
|
122
|
+
peer: ICoreMailGatewayPeerDesiredState;
|
|
123
|
+
};
|
|
124
|
+
response: {
|
|
125
|
+
success: boolean;
|
|
126
|
+
peer?: ICoreMailGatewayPeerDesiredState;
|
|
127
|
+
message?: string;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export interface IReq_DeleteCoreMailGatewayPeer extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_DeleteCoreMailGatewayPeer> {
|
|
131
|
+
method: 'deleteCoreMailGatewayPeer';
|
|
132
|
+
request: {
|
|
133
|
+
auth: IMailControlRequestAuth;
|
|
134
|
+
owner: IMailResourceOwner;
|
|
135
|
+
coreMailServiceId: string;
|
|
136
|
+
};
|
|
137
|
+
response: {
|
|
138
|
+
success: boolean;
|
|
139
|
+
message?: string;
|
|
140
|
+
};
|
|
141
|
+
}
|
|
92
142
|
export interface IReq_ListWorkAppMailBindings extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ListWorkAppMailBindings> {
|
|
93
143
|
method: 'listWorkAppMailBindings';
|
|
94
144
|
request: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serve.zone/interfaces",
|
|
3
|
-
"version": "30.
|
|
3
|
+
"version": "30.14.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.",
|
|
6
6
|
"exports": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"@git.zone/tsbuild": "^4.4.3",
|
|
31
31
|
"@git.zone/tsdoc": "^2.2.0",
|
|
32
32
|
"@git.zone/tsrun": "^2.0.6",
|
|
33
|
-
"@git.zone/tstest": "6.
|
|
33
|
+
"@git.zone/tstest": "6.1.0",
|
|
34
34
|
"@types/node": "26.5.0"
|
|
35
35
|
},
|
|
36
36
|
"files": [
|
package/readme.md
CHANGED
|
@@ -1217,6 +1217,17 @@ may continue its next configured resolver. Consumers must apply
|
|
|
1217
1217
|
`data.normalizeCoreMailRecipientResolutions()` against the exact requested
|
|
1218
1218
|
recipient set before acting on a peer response.
|
|
1219
1219
|
|
|
1220
|
+
CoreMail binds every issued routing handle to a digest of the exact normalized
|
|
1221
|
+
`envelope` and `source` sent at resolve time. A following
|
|
1222
|
+
`coreMailGatewayPrepareInboundHandoff` must resend byte-identical values,
|
|
1223
|
+
including the complete `rcptTo` set in the same order. Both peers use
|
|
1224
|
+
`data.normalizeCoreMailGatewayMessage` and
|
|
1225
|
+
`data.normalizeCoreMailConnectionInfo` so the digested bytes come from one
|
|
1226
|
+
shared implementation. Outbound status is monotonic per `transportMessageId`,
|
|
1227
|
+
and a permanently unknown `transportMessageId` is answered with a terminal
|
|
1228
|
+
`failed` status rather than an error, because CoreMail retries errors
|
|
1229
|
+
indefinitely.
|
|
1230
|
+
|
|
1220
1231
|
Large content never travels inside TypedRequest JSON. Outbound body parts and
|
|
1221
1232
|
attachments use prepare/upload/complete operations with short-lived one-time
|
|
1222
1233
|
HTTP transfer grants. Inbound delivery uses bounded delivery listing followed
|
|
@@ -1245,6 +1256,23 @@ credential-lifecycle inconsistencies. CoreMail credential verifiers use the
|
|
|
1245
1256
|
versioned `argon2id-v1` format and the exact policy exported as
|
|
1246
1257
|
`data.coreMailCredentialVerifierPolicy`.
|
|
1247
1258
|
|
|
1259
|
+
`data.ICoreMailDesiredState.smtp` is the optional CoreMail SMTP submission
|
|
1260
|
+
listener (MSA). It carries the listener port, the advertised EHLO hostname, and
|
|
1261
|
+
the runtime secret keys holding certificate and private-key PEM text; plaintext
|
|
1262
|
+
PEM material never appears in desired state. SMTP AUTH uses the binding
|
|
1263
|
+
identity directly: the username is the `bindingId` and the password is any
|
|
1264
|
+
current or retiring credential secret of that binding. The listener stays
|
|
1265
|
+
unavailable until the referenced PEM material resolves. Omitting `smtp` keeps
|
|
1266
|
+
the exact canonical bytes and digest of an API-only CoreMail. Accepted
|
|
1267
|
+
submissions report their entry point through the optional
|
|
1268
|
+
`ICoreMailSubmission.source`, either `api` or `smtp`.
|
|
1269
|
+
|
|
1270
|
+
`data.ICoreMailServiceMailStatistics` reports per-service outbound and inbound
|
|
1271
|
+
counters for one UTC calendar day. Control sessions read them through
|
|
1272
|
+
`coreMailGetServiceMailStatistics` using an inclusive day range, an optional
|
|
1273
|
+
service filter, and an opaque cursor. Apply
|
|
1274
|
+
`data.normalizeCoreMailServiceMailStatistics` before using reported counters.
|
|
1275
|
+
|
|
1248
1276
|
`data.ICoreMailControlBootstrap` is installed before ordinary reconciliation.
|
|
1249
1277
|
It contains the CoreMail service identity and verifier metadata only. The
|
|
1250
1278
|
matching plaintext control credential is delivered exclusively to Coreflow
|
|
@@ -1269,7 +1297,13 @@ CoreMail transfer origin associated with an authenticated CoreMail service.
|
|
|
1269
1297
|
The same origin is carried in CoreMail desired state and returned by workload
|
|
1270
1298
|
and gateway authentication. It must never be inferred from a socket, Host
|
|
1271
1299
|
header, TypedSocket tag, or unrestricted peer input. CoreMail compares both
|
|
1272
|
-
authoritative views before handing over a path-only transfer grant.
|
|
1300
|
+
authoritative views before handing over a path-only transfer grant. Cloudly and
|
|
1301
|
+
Onebox provision that peer state through `listCoreMailGatewayPeers`,
|
|
1302
|
+
`syncCoreMailGatewayPeer`, and `deleteCoreMailGatewayPeer` on the gateway-client
|
|
1303
|
+
mail surface, and the producer is the single owner of `peer.transferOrigin`. A
|
|
1304
|
+
mail inbound target may point at a CoreMail service using `type: 'coreMail'`
|
|
1305
|
+
with `coreMail.coreMailServiceId`, mirrored by the `coreMail` member of
|
|
1306
|
+
`IServiceMailInboundConfig.targetType`.
|
|
1273
1307
|
|
|
1274
1308
|
Inbound delivery pagination uses an opaque CoreMail-owned `cursor`, is bounded
|
|
1275
1309
|
by `data.coreMailLimits.inboundPageSize`, and returns `nextCursor` only when
|
|
@@ -1316,6 +1350,41 @@ current task roster. Apply `data.normalizeCoreMailReconciliationStatus` before
|
|
|
1316
1350
|
using pending-inbound or composite active-session counts for drain and rotation
|
|
1317
1351
|
decisions.
|
|
1318
1352
|
|
|
1353
|
+
#### CoreMail control-plane settings and operator RPCs
|
|
1354
|
+
|
|
1355
|
+
`data.ICloudlySettings` carries the CoreMail control plane: `coreMailEnabled`,
|
|
1356
|
+
`coreMailServiceId`, the canonical `coreMailControlEndpointUrl`
|
|
1357
|
+
(`https://host/socket`), the path-free `coreMailTransferOrigin`, dcrouter's
|
|
1358
|
+
`coreMailGatewayEndpointUrl` (`wss://…`), the composite
|
|
1359
|
+
`coreMailControlCredentialId`/`coreMailControlCredentialVersion`, the submission
|
|
1360
|
+
listener's `coreMailSmtpHost`, `coreMailSmtpPort` and `coreMailSmtpTlsMode`, and
|
|
1361
|
+
the `coreMailDefault*` binding quota defaults. No credential or PEM value is
|
|
1362
|
+
part of settings: `data.cloudlySystemSecretKeys` publishes
|
|
1363
|
+
`coreMailControlCredentialSecret`, `coreMailGatewayCredentialSecret`,
|
|
1364
|
+
`coreMailSmtpTlsCertificatePem`, and `coreMailSmtpTlsPrivateKeyPem` as the
|
|
1365
|
+
stable keys of the removed values. The submission listener's PEM material is
|
|
1366
|
+
operator-supplied in v1; automatic issuance is a later workstream.
|
|
1367
|
+
|
|
1368
|
+
Secrets that Cloudly manages for CoreMail use the `coremail` management source
|
|
1369
|
+
and a `coremail:<identifier>` management scope, validated by the existing
|
|
1370
|
+
`data.validateSecretManagementScope` and secret-metadata validators.
|
|
1371
|
+
|
|
1372
|
+
`IServiceMailConfig.coreMail` publishes the service's CoreMail binding as public
|
|
1373
|
+
metadata only: binding and composite credential identity, the `argon2id-v1`
|
|
1374
|
+
verification hash, the binding state, and any `retiring` predecessor with its
|
|
1375
|
+
`acceptUntil`. Plaintext never appears there, and the field is excluded from
|
|
1376
|
+
`data.TServiceWritableData`, so only the control plane writes it while the rest
|
|
1377
|
+
of `mail` stays caller-writable. `IServiceMailConfig.allowedSenders` makes the
|
|
1378
|
+
outbound sender allowlist explicit instead of inferring it from per-address
|
|
1379
|
+
`outbound.enabled`.
|
|
1380
|
+
|
|
1381
|
+
`requests.coremailAdmin` carries the identity-authenticated operator surface:
|
|
1382
|
+
`getCoreMailServiceMailStatistics` for per-service daily counters,
|
|
1383
|
+
`getCoreMailControlStatus` for the applied config epoch, desired-state digest
|
|
1384
|
+
and last reconciliation status, and `listServiceMailTargets` for the mail target
|
|
1385
|
+
inventory (`data.IServiceMailTargetSummary` with
|
|
1386
|
+
`data.IServiceMailTargetAddressSummary` rows).
|
|
1387
|
+
|
|
1319
1388
|
Request groups are exported by product area:
|
|
1320
1389
|
|
|
1321
1390
|
- `requests.admin`
|
|
@@ -1327,6 +1396,7 @@ Request groups are exported by product area:
|
|
|
1327
1396
|
- `requests.cluster`
|
|
1328
1397
|
- `requests.config`
|
|
1329
1398
|
- `requests.coremail`
|
|
1399
|
+
- `requests.coremailAdmin`
|
|
1330
1400
|
- `requests.corestore`
|
|
1331
1401
|
- `requests.deployment`
|
|
1332
1402
|
- `requests.dns`
|