@serve.zone/interfaces 19.6.1 → 19.7.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 +14 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/mail.d.ts +3 -0
- package/dist_ts/requests/mail.d.ts +2 -1
- package/package.json +2 -2
- package/readme.md +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/mail.ts +6 -0
- package/ts/requests/mail.ts +2 -0
package/changelog.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026-07-29 - 19.7.0
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- add first-class Reply-To support to service mail contracts (mail)
|
|
8
|
+
- Add optional replyTo support for outbound message payloads as a single bare ASCII mailbox address.
|
|
9
|
+
- Expose stable mail submission error codes for invalid Reply-To values and typed-field/header conflicts.
|
|
10
|
+
- Add service-mail type coverage and documentation for Reply-To handling.
|
|
11
|
+
|
|
12
|
+
### Chores
|
|
13
|
+
|
|
14
|
+
- update active Git Zone runtime tooling (dev-deps)
|
|
15
|
+
- Update `@git.zone/tsrun` from 2.0.5 to 2.0.6.
|
|
16
|
+
|
|
3
17
|
## 2026-07-28 - 19.6.1
|
|
4
18
|
|
|
5
19
|
### Fixes
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@serve.zone/interfaces',
|
|
6
|
-
version: '19.
|
|
6
|
+
version: '19.7.0',
|
|
7
7
|
description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHVGQUF1RjtDQUNyRyxDQUFBIn0=
|
package/dist_ts/data/mail.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export type TMailBounceType = 'hard' | 'soft' | 'complaint' | 'unknown';
|
|
|
12
12
|
export type TMailInboundProtocol = 'smtp' | 'submission' | 'api';
|
|
13
13
|
export type TMailRecipientResolutionAction = 'accept' | 'reject' | 'defer';
|
|
14
14
|
export type TMailDeliveryJournalEventType = 'accepted' | 'queued' | 'deliveryStarted' | 'deliverySucceeded' | 'deliveryDeferred' | 'deliveryFailed' | 'deadLettered' | 'rejected' | 'bounced' | 'complaint';
|
|
15
|
+
export type TMailSubmissionErrorCode = 'INVALID_REPLY_TO' | 'REPLY_TO_FIELD_HEADER_CONFLICT';
|
|
15
16
|
/**
|
|
16
17
|
* Runtime owner of a mail resource. `appInstanceId` is the deployed WorkApp or service
|
|
17
18
|
* instance, not an App Store template id.
|
|
@@ -317,6 +318,8 @@ export interface IMailOutboundMessagePayload {
|
|
|
317
318
|
to: string[];
|
|
318
319
|
cc?: string[];
|
|
319
320
|
bcc?: string[];
|
|
321
|
+
/** One bare ASCII mailbox address. Display names and address lists are not supported. */
|
|
322
|
+
replyTo?: string;
|
|
320
323
|
subject: string;
|
|
321
324
|
text?: string;
|
|
322
325
|
html?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
2
|
import type { IIdentity } from '../data/user.js';
|
|
3
|
-
import type { IMailAddressBinding, IMailCredentialOneTimeSecret, IMailConnectionInfo, IMailDeliveryJournalEvent, IMailDeliveryStatus, IMailDomainAuthority, IMailEnvelope, IMailInboundMessagePayload, IMailOutboundIdentity, IMailOutboundMessagePayload, IMailRecipientResolution, IMailResourceOwner, IMailSpoolItem, IWorkAppMailBinding } from '../data/mail.js';
|
|
3
|
+
import type { IMailAddressBinding, IMailCredentialOneTimeSecret, IMailConnectionInfo, IMailDeliveryJournalEvent, IMailDeliveryStatus, IMailDomainAuthority, IMailEnvelope, IMailInboundMessagePayload, IMailOutboundIdentity, IMailOutboundMessagePayload, IMailRecipientResolution, IMailResourceOwner, IMailSpoolItem, IWorkAppMailBinding, TMailSubmissionErrorCode } from '../data/mail.js';
|
|
4
4
|
export interface IMailControlRequestAuth {
|
|
5
5
|
identity?: IIdentity;
|
|
6
6
|
apiToken?: string;
|
|
@@ -212,6 +212,7 @@ export interface IReq_EnqueueMail extends plugins.typedrequestInterfaces.impleme
|
|
|
212
212
|
accepted: boolean;
|
|
213
213
|
spoolItemId?: string;
|
|
214
214
|
outboundIdentity?: IMailOutboundIdentity;
|
|
215
|
+
errorCode?: TMailSubmissionErrorCode;
|
|
215
216
|
message?: string;
|
|
216
217
|
};
|
|
217
218
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serve.zone/interfaces",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.7.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.",
|
|
6
6
|
"exports": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@git.zone/tsbuild": "^4.4.2",
|
|
19
19
|
"@git.zone/tsdoc": "^2.1.1",
|
|
20
|
-
"@git.zone/tsrun": "^2.0.
|
|
20
|
+
"@git.zone/tsrun": "^2.0.6",
|
|
21
21
|
"@git.zone/tstest": "^3.6.7",
|
|
22
22
|
"@types/node": "^26.1.1"
|
|
23
23
|
},
|
package/readme.md
CHANGED
|
@@ -287,7 +287,7 @@ The immutable deployment workflow is:
|
|
|
287
287
|
|
|
288
288
|
`data.IServiceDeploymentOperation` is the durable revisioned compare-and-set fence for this workflow. Image promotion requires Cloudly-created trusted evidence that binds the operation, actor, repository, exact tag, root digest, and OCI index media type. The service request group also exposes deployment preflight, exact-digest rollback, retry, and cleanup contracts.
|
|
289
289
|
|
|
290
|
-
Gateway request contracts include `getGatewayClientRoutes` (`requests.gateway.IReq_GetGatewayClientRoutes`) for listing owned `IGatewayClientRoute[]` route views, and `syncGatewayClientRoute` for idempotently syncing or deleting hostname-owned, routeRef-owned, and combined hostname-plus-routeRef routes. A client can label canonical intent with `managedRouteKind: 'letsencrypt-http01-forward'` and set a higher `priority` for a path-specific HTTP-01 route while retaining a separate normal route for the same hostname. Mail request contracts include `syncMailAddressBinding`, `deleteMailAddressBinding`, `rotateMailCredential`, and `getMailDeliveryStatus`. `IReq_GetMailDeliveryStatus` looks up a delivery spool item by `spoolItemId`, returns `data.IMailDeliveryStatus`, and accepts `IMailSubmissionRequestAuth` so service-mail credentials can query their own accepted, queued, deferred, delivered, or failed status. `TMailAddressBindingSync.outboundEnabled` explicitly controls whether a gateway should maintain a managed outbound SMTP credential for an address binding. Binding credential metadata is public; `rotateMailCredential` returns the new secret only in its one-time `IMailCredentialOneTimeSecret` response.
|
|
290
|
+
Gateway request contracts include `getGatewayClientRoutes` (`requests.gateway.IReq_GetGatewayClientRoutes`) for listing owned `IGatewayClientRoute[]` route views, and `syncGatewayClientRoute` for idempotently syncing or deleting hostname-owned, routeRef-owned, and combined hostname-plus-routeRef routes. A client can label canonical intent with `managedRouteKind: 'letsencrypt-http01-forward'` and set a higher `priority` for a path-specific HTTP-01 route while retaining a separate normal route for the same hostname. Mail request contracts include `syncMailAddressBinding`, `deleteMailAddressBinding`, `rotateMailCredential`, and `getMailDeliveryStatus`. `IReq_GetMailDeliveryStatus` looks up a delivery spool item by `spoolItemId`, returns `data.IMailDeliveryStatus`, and accepts `IMailSubmissionRequestAuth` so service-mail credentials can query their own accepted, queued, deferred, delivered, or failed status. Typed outbound messages may set `replyTo` to one bare ASCII mailbox address; arbitrary `Reply-To` values do not belong in the custom header bag. Invalid values and typed-field/custom-header conflicts return stable `TMailSubmissionErrorCode` values. `TMailAddressBindingSync.outboundEnabled` explicitly controls whether a gateway should maintain a managed outbound SMTP credential for an address binding. Binding credential metadata is public; `rotateMailCredential` returns the new secret only in its one-time `IMailCredentialOneTimeSecret` response.
|
|
291
291
|
|
|
292
292
|
### Web Push Contracts
|
|
293
293
|
|
package/ts/00_commitinfo_data.ts
CHANGED
package/ts/data/mail.ts
CHANGED
|
@@ -50,6 +50,10 @@ export type TMailDeliveryJournalEventType =
|
|
|
50
50
|
| 'bounced'
|
|
51
51
|
| 'complaint';
|
|
52
52
|
|
|
53
|
+
export type TMailSubmissionErrorCode =
|
|
54
|
+
| 'INVALID_REPLY_TO'
|
|
55
|
+
| 'REPLY_TO_FIELD_HEADER_CONFLICT';
|
|
56
|
+
|
|
53
57
|
/**
|
|
54
58
|
* Runtime owner of a mail resource. `appInstanceId` is the deployed WorkApp or service
|
|
55
59
|
* instance, not an App Store template id.
|
|
@@ -385,6 +389,8 @@ export interface IMailOutboundMessagePayload {
|
|
|
385
389
|
to: string[];
|
|
386
390
|
cc?: string[];
|
|
387
391
|
bcc?: string[];
|
|
392
|
+
/** One bare ASCII mailbox address. Display names and address lists are not supported. */
|
|
393
|
+
replyTo?: string;
|
|
388
394
|
subject: string;
|
|
389
395
|
text?: string;
|
|
390
396
|
html?: string;
|
package/ts/requests/mail.ts
CHANGED
|
@@ -15,6 +15,7 @@ import type {
|
|
|
15
15
|
IMailResourceOwner,
|
|
16
16
|
IMailSpoolItem,
|
|
17
17
|
IWorkAppMailBinding,
|
|
18
|
+
TMailSubmissionErrorCode,
|
|
18
19
|
} from '../data/mail.js';
|
|
19
20
|
|
|
20
21
|
export interface IMailControlRequestAuth {
|
|
@@ -305,6 +306,7 @@ export interface IReq_EnqueueMail extends plugins.typedrequestInterfaces.impleme
|
|
|
305
306
|
accepted: boolean;
|
|
306
307
|
spoolItemId?: string;
|
|
307
308
|
outboundIdentity?: IMailOutboundIdentity;
|
|
309
|
+
errorCode?: TMailSubmissionErrorCode;
|
|
308
310
|
message?: string;
|
|
309
311
|
};
|
|
310
312
|
}
|