@serve.zone/dcrouter 17.2.4 → 17.3.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.
Files changed (98) hide show
  1. package/deno.json +1 -1
  2. package/dist_serve/bundle.js +2024 -1758
  3. package/dist_ts/00_commitinfo_data.js +1 -1
  4. package/dist_ts/classes.dcrouter.d.ts +4 -1
  5. package/dist_ts/classes.dcrouter.js +42 -2
  6. package/dist_ts/config/classes.api-token-manager.d.ts +20 -2
  7. package/dist_ts/config/classes.api-token-manager.js +201 -6
  8. package/dist_ts/config/classes.gateway-client-manager.d.ts +36 -2
  9. package/dist_ts/config/classes.gateway-client-manager.js +391 -27
  10. package/dist_ts/db/documents/classes.api-token.doc.d.ts +2 -1
  11. package/dist_ts/db/documents/classes.api-token.doc.js +8 -2
  12. package/dist_ts/db/documents/classes.gateway-client.doc.d.ts +25 -0
  13. package/dist_ts/db/documents/classes.gateway-client.doc.js +73 -2
  14. package/dist_ts/db/documents/classes.ops-config-event.doc.d.ts +55 -0
  15. package/dist_ts/db/documents/classes.ops-config-event.doc.js +296 -0
  16. package/dist_ts/db/documents/index.d.ts +1 -0
  17. package/dist_ts/db/documents/index.js +2 -1
  18. package/dist_ts/dns/classes.gateway-route-dns-reconciler.d.ts +52 -0
  19. package/dist_ts/dns/classes.gateway-route-dns-reconciler.js +609 -0
  20. package/dist_ts/dns/index.d.ts +1 -0
  21. package/dist_ts/dns/index.js +2 -1
  22. package/dist_ts/dns/manager.dns.d.ts +19 -0
  23. package/dist_ts/dns/manager.dns.js +25 -1
  24. package/dist_ts/monitoring/classes.ops-event-manager.d.ts +32 -0
  25. package/dist_ts/monitoring/classes.ops-event-manager.js +71 -0
  26. package/dist_ts/monitoring/index.d.ts +1 -0
  27. package/dist_ts/monitoring/index.js +2 -1
  28. package/dist_ts/opsserver/classes.opsserver.d.ts +1 -0
  29. package/dist_ts/opsserver/classes.opsserver.js +3 -1
  30. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +1 -0
  31. package/dist_ts/opsserver/handlers/certificate.handler.js +35 -5
  32. package/dist_ts/opsserver/handlers/config-event.handler.d.ts +12 -0
  33. package/dist_ts/opsserver/handlers/config-event.handler.js +47 -0
  34. package/dist_ts/opsserver/handlers/dns-record.handler.d.ts +1 -0
  35. package/dist_ts/opsserver/handlers/dns-record.handler.js +82 -3
  36. package/dist_ts/opsserver/handlers/gatewayclient.handler.d.ts +9 -1
  37. package/dist_ts/opsserver/handlers/gatewayclient.handler.js +714 -162
  38. package/dist_ts/opsserver/handlers/index.d.ts +1 -0
  39. package/dist_ts/opsserver/handlers/index.js +2 -1
  40. package/dist_ts/opsserver/helpers/gateway-client-auth.d.ts +25 -0
  41. package/dist_ts/opsserver/helpers/gateway-client-auth.js +168 -0
  42. package/dist_ts/plugins.d.ts +2 -1
  43. package/dist_ts/plugins.js +3 -2
  44. package/dist_ts_apiclient/classes.gatewayclient.d.ts +13 -1
  45. package/dist_ts_apiclient/classes.gatewayclient.js +18 -2
  46. package/dist_ts_interfaces/data/config-events.d.ts +34 -0
  47. package/dist_ts_interfaces/data/config-events.js +8 -0
  48. package/dist_ts_interfaces/data/index.d.ts +1 -0
  49. package/dist_ts_interfaces/data/index.js +2 -1
  50. package/dist_ts_interfaces/data/route-management.d.ts +28 -1
  51. package/dist_ts_interfaces/data/route-management.js +3 -1
  52. package/dist_ts_interfaces/data/workhoster.d.ts +1 -0
  53. package/dist_ts_interfaces/requests/config-events.d.ts +35 -0
  54. package/dist_ts_interfaces/requests/config-events.js +4 -0
  55. package/dist_ts_interfaces/requests/index.d.ts +1 -0
  56. package/dist_ts_interfaces/requests/index.js +2 -1
  57. package/dist_ts_interfaces/requests/realtime.d.ts +1 -1
  58. package/dist_ts_interfaces/requests/realtime.js +2 -1
  59. package/dist_ts_migrations/index.js +148 -9
  60. package/dist_ts_web/00_commitinfo_data.js +1 -1
  61. package/dist_ts_web/appstate/config-events.d.ts +19 -0
  62. package/dist_ts_web/appstate/config-events.js +68 -0
  63. package/dist_ts_web/appstate/runtime.js +7 -1
  64. package/dist_ts_web/appstate.d.ts +1 -0
  65. package/dist_ts_web/appstate.js +2 -1
  66. package/dist_ts_web/elements/ops-platform-events.d.ts +21 -0
  67. package/dist_ts_web/elements/ops-platform-events.js +361 -0
  68. package/dist_ts_web/elements/ops-view-logs.d.ts +4 -0
  69. package/dist_ts_web/elements/ops-view-logs.js +96 -9
  70. package/package.json +2 -2
  71. package/ts/00_commitinfo_data.ts +1 -1
  72. package/ts/classes.dcrouter.ts +48 -1
  73. package/ts/config/classes.api-token-manager.ts +237 -4
  74. package/ts/config/classes.gateway-client-manager.ts +463 -19
  75. package/ts/db/documents/classes.api-token.doc.ts +8 -1
  76. package/ts/db/documents/classes.gateway-client.doc.ts +86 -0
  77. package/ts/db/documents/classes.ops-config-event.doc.ts +257 -0
  78. package/ts/db/documents/index.ts +1 -0
  79. package/ts/dns/classes.gateway-route-dns-reconciler.ts +801 -0
  80. package/ts/dns/index.ts +1 -0
  81. package/ts/dns/manager.dns.ts +36 -0
  82. package/ts/monitoring/classes.ops-event-manager.ts +99 -0
  83. package/ts/monitoring/index.ts +2 -1
  84. package/ts/opsserver/classes.opsserver.ts +2 -0
  85. package/ts/opsserver/handlers/certificate.handler.ts +51 -4
  86. package/ts/opsserver/handlers/config-event.handler.ts +62 -0
  87. package/ts/opsserver/handlers/dns-record.handler.ts +101 -2
  88. package/ts/opsserver/handlers/gatewayclient.handler.ts +804 -136
  89. package/ts/opsserver/handlers/index.ts +1 -0
  90. package/ts/opsserver/helpers/gateway-client-auth.ts +198 -0
  91. package/ts/plugins.ts +2 -0
  92. package/ts_apiclient/classes.gatewayclient.ts +45 -0
  93. package/ts_web/00_commitinfo_data.ts +1 -1
  94. package/ts_web/appstate/config-events.ts +98 -0
  95. package/ts_web/appstate/runtime.ts +8 -1
  96. package/ts_web/appstate.ts +1 -0
  97. package/ts_web/elements/ops-platform-events.ts +315 -0
  98. package/ts_web/elements/ops-view-logs.ts +84 -7
@@ -22,3 +22,4 @@ export * from './acme-config.handler.js';
22
22
  export * from './email-domain.handler.js';
23
23
  export * from './gatewayclient.handler.js';
24
24
  export * from './realtime.handler.js';
25
+ export * from './config-event.handler.js';
@@ -22,4 +22,5 @@ export * from './acme-config.handler.js';
22
22
  export * from './email-domain.handler.js';
23
23
  export * from './gatewayclient.handler.js';
24
24
  export * from './realtime.handler.js';
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9vcHNzZXJ2ZXIvaGFuZGxlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsdUJBQXVCLENBQUMifQ==
25
+ export * from './config-event.handler.js';
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9vcHNzZXJ2ZXIvaGFuZGxlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQkFBMkIsQ0FBQyJ9
@@ -0,0 +1,25 @@
1
+ import type { OpsServer } from '../classes.opsserver.js';
2
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
3
+ export interface IGatewayMachineAuthContext {
4
+ userId: string;
5
+ isAdmin: boolean;
6
+ token?: interfaces.data.IStoredApiToken;
7
+ credentialId?: string;
8
+ policy?: interfaces.data.IApiTokenPolicy;
9
+ gatewayClient?: interfaces.data.IGatewayClient;
10
+ managedZoneNames: string[];
11
+ }
12
+ export type TGatewayCredentialState = 'candidate' | 'active' | 'manual';
13
+ export interface IRequireGatewayMachineAuthOptions {
14
+ allowCandidate?: boolean;
15
+ }
16
+ export declare function getGatewayCredentialState(tokenArg: interfaces.data.IStoredApiToken): TGatewayCredentialState;
17
+ export declare function normalizeGatewayHostname(hostnameArg: string): string;
18
+ export declare function normalizeGatewayTargetHost(hostArg: string): string;
19
+ export declare function isHostnameInManagedZone(hostnameArg: string, managedZoneNamesArg: string[]): boolean;
20
+ export declare function matchesGatewayHostnamePatterns(hostnameArg: string, patternsArg: string[], managedZoneNamesArg: string[]): boolean;
21
+ export declare function hasOwnedEnabledGatewayRoute(opsServerRefArg: OpsServer, authArg: IGatewayMachineAuthContext, hostnameArg: string): boolean;
22
+ export declare function requireGatewayMachineAuth(opsServerRefArg: OpsServer, requestArg: {
23
+ identity?: interfaces.data.IIdentity;
24
+ apiToken?: string;
25
+ }, scopeArg: 'gateway-clients:read' | 'gateway-clients:write', optionsArg?: IRequireGatewayMachineAuthOptions): Promise<IGatewayMachineAuthContext>;
@@ -0,0 +1,168 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
3
+ import { requireOpsAuth } from './auth.js';
4
+ export function getGatewayCredentialState(tokenArg) {
5
+ const lifecycle = tokenArg.gatewayCredentialLifecycle;
6
+ if (lifecycle == null)
7
+ return 'manual';
8
+ if (lifecycle.source === 'provisioned'
9
+ && (lifecycle.state === 'candidate' || lifecycle.state === 'active')) {
10
+ return lifecycle.state;
11
+ }
12
+ throw new plugins.typedrequest.TypedResponseError('gateway-client credential lifecycle is invalid');
13
+ }
14
+ export function normalizeGatewayHostname(hostnameArg) {
15
+ const candidate = String(hostnameArg || '').trim().toLowerCase().replace(/\.+$/, '');
16
+ if (!candidate || candidate.includes('*')) {
17
+ throw new plugins.typedrequest.TypedResponseError(`invalid hostname: ${hostnameArg}`);
18
+ }
19
+ const ascii = plugins.url.domainToASCII(candidate);
20
+ if (!ascii) {
21
+ throw new plugins.typedrequest.TypedResponseError(`invalid hostname: ${hostnameArg}`);
22
+ }
23
+ return ascii;
24
+ }
25
+ export function normalizeGatewayTargetHost(hostArg) {
26
+ const candidate = String(hostArg || '').trim().toLowerCase().replace(/\.+$/, '');
27
+ if (plugins.net.isIP(candidate))
28
+ return candidate;
29
+ const ascii = plugins.url.domainToASCII(candidate);
30
+ if (!ascii) {
31
+ throw new plugins.typedrequest.TypedResponseError(`invalid route target host: ${hostArg}`);
32
+ }
33
+ return ascii;
34
+ }
35
+ export function isHostnameInManagedZone(hostnameArg, managedZoneNamesArg) {
36
+ const hostname = normalizeGatewayHostname(hostnameArg);
37
+ return managedZoneNamesArg.some((zoneArg) => {
38
+ const zone = normalizeGatewayHostname(zoneArg);
39
+ return hostname === zone || hostname.endsWith(`.${zone}`);
40
+ });
41
+ }
42
+ export function matchesGatewayHostnamePatterns(hostnameArg, patternsArg, managedZoneNamesArg) {
43
+ const hostname = normalizeGatewayHostname(hostnameArg);
44
+ for (const patternArg of patternsArg) {
45
+ const rawPattern = String(patternArg || '').trim().toLowerCase().replace(/\.+$/, '');
46
+ if (!rawPattern)
47
+ continue;
48
+ if (rawPattern === '*') {
49
+ if (isHostnameInManagedZone(hostname, managedZoneNamesArg))
50
+ return true;
51
+ continue;
52
+ }
53
+ const wildcard = rawPattern.startsWith('*.');
54
+ const normalizedPattern = normalizeGatewayHostname(wildcard ? rawPattern.slice(2) : rawPattern);
55
+ if (!wildcard && hostname === normalizedPattern)
56
+ return true;
57
+ if (!wildcard || !hostname.endsWith(`.${normalizedPattern}`))
58
+ continue;
59
+ const label = hostname.slice(0, -(normalizedPattern.length + 1));
60
+ if (label && !label.includes('.'))
61
+ return true;
62
+ }
63
+ return false;
64
+ }
65
+ export function hasOwnedEnabledGatewayRoute(opsServerRefArg, authArg, hostnameArg) {
66
+ if (authArg.isAdmin)
67
+ return true;
68
+ const liveClient = authArg.gatewayClient;
69
+ if (!liveClient)
70
+ return false;
71
+ const hostname = normalizeGatewayHostname(hostnameArg);
72
+ const routes = opsServerRefArg.dcRouterRef.routeConfigManager?.getMergedRoutes().routes || [];
73
+ return routes.some((routeArg) => {
74
+ if (!routeArg.enabled || routeArg.metadata?.ownerType !== 'gatewayClient')
75
+ return false;
76
+ if (routeArg.metadata.gatewayClientId !== liveClient.id)
77
+ return false;
78
+ if ((routeArg.metadata.gatewayClientType || 'custom') !== liveClient.type)
79
+ return false;
80
+ const domains = routeArg.route.match?.domains;
81
+ const values = Array.isArray(domains)
82
+ ? domains
83
+ : typeof domains === 'string'
84
+ ? domains.split(',')
85
+ : [];
86
+ return values.some((domainArg) => {
87
+ try {
88
+ return normalizeGatewayHostname(domainArg) === hostname;
89
+ }
90
+ catch {
91
+ return false;
92
+ }
93
+ });
94
+ });
95
+ }
96
+ export async function requireGatewayMachineAuth(opsServerRefArg, requestArg, scopeArg, optionsArg = {}) {
97
+ const auth = await requireOpsAuth(opsServerRefArg, requestArg, {
98
+ scope: scopeArg,
99
+ requireAdminIdentity: false,
100
+ });
101
+ const managedZoneNames = (await opsServerRefArg.dcRouterRef.dnsManager?.listDomains() || [])
102
+ .map((domainArg) => domainArg.name);
103
+ if (auth.isAdmin) {
104
+ return {
105
+ userId: auth.userId,
106
+ isAdmin: true,
107
+ token: auth.token,
108
+ policy: auth.token?.policy,
109
+ managedZoneNames,
110
+ };
111
+ }
112
+ if (auth.type !== 'apiToken' || auth.token?.policy?.role !== 'gatewayClient') {
113
+ throw new plugins.typedrequest.TypedResponseError('gateway-client credential required');
114
+ }
115
+ const credentialState = getGatewayCredentialState(auth.token);
116
+ if (credentialState === 'candidate' && !optionsArg.allowCandidate) {
117
+ throw new plugins.typedrequest.TypedResponseError('gateway-client credential is awaiting finalization');
118
+ }
119
+ const credentialLifecycle = auth.token.gatewayCredentialLifecycle;
120
+ const tokenBinding = auth.token.policy.gatewayClient;
121
+ if (!tokenBinding?.id || !tokenBinding.type || !Number.isSafeInteger(tokenBinding.policyGeneration)) {
122
+ throw new plugins.typedrequest.TypedResponseError('gateway-client credential binding is incomplete');
123
+ }
124
+ const manager = opsServerRefArg.dcRouterRef.gatewayClientManager;
125
+ if (!manager) {
126
+ throw new plugins.typedrequest.TypedResponseError('gateway client management not initialized');
127
+ }
128
+ // Deliberately load the durable policy on every request. Token snapshots are
129
+ // identity bindings only and never provide current authorization.
130
+ if (credentialLifecycle
131
+ && credentialLifecycle.policyGeneration !== tokenBinding.policyGeneration) {
132
+ throw new plugins.typedrequest.TypedResponseError('gateway-client credential binding is inconsistent');
133
+ }
134
+ const liveClient = credentialLifecycle
135
+ ? await manager.getClientForProvisionedCredential(tokenBinding.id, tokenBinding.type, credentialLifecycle)
136
+ : await manager.getClient(tokenBinding.id);
137
+ if (!liveClient || !liveClient.enabled) {
138
+ throw new plugins.typedrequest.TypedResponseError('gateway client is missing or disabled');
139
+ }
140
+ if (liveClient.type !== tokenBinding.type) {
141
+ throw new plugins.typedrequest.TypedResponseError('gateway-client credential type does not match live policy');
142
+ }
143
+ if (liveClient.policyGeneration !== tokenBinding.policyGeneration) {
144
+ throw new plugins.typedrequest.TypedResponseError('gateway-client credential policy generation is stale');
145
+ }
146
+ const livePolicy = {
147
+ role: 'gatewayClient',
148
+ scopes: ['gateway-clients:read', 'gateway-clients:write'],
149
+ gatewayClient: {
150
+ type: liveClient.type,
151
+ id: liveClient.id,
152
+ policyGeneration: liveClient.policyGeneration,
153
+ },
154
+ hostnamePatterns: structuredClone(liveClient.hostnamePatterns),
155
+ allowedRouteTargets: structuredClone(liveClient.allowedRouteTargets),
156
+ capabilities: structuredClone(liveClient.capabilities),
157
+ };
158
+ return {
159
+ userId: auth.userId,
160
+ isAdmin: false,
161
+ token: auth.token,
162
+ credentialId: auth.token.id,
163
+ policy: livePolicy,
164
+ gatewayClient: liveClient,
165
+ managedZoneNames,
166
+ };
167
+ }
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS1jbGllbnQtYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL29wc3NlcnZlci9oZWxwZXJzL2dhdGV3YXktY2xpZW50LWF1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxPQUFPLEtBQUssVUFBVSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFrQjNDLE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsUUFBeUM7SUFFekMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLDBCQUEwQixDQUFDO0lBQ3RELElBQUksU0FBUyxJQUFJLElBQUk7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUN2QyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssYUFBYTtXQUNqQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN2RSxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUNELE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLGdEQUFnRCxDQUFDLENBQUM7QUFDdEcsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxXQUFtQjtJQUMxRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMscUJB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
@@ -8,7 +8,8 @@ import * as os from 'node:os';
8
8
  import * as path from 'node:path';
9
9
  import * as tls from 'node:tls';
10
10
  import * as util from 'node:util';
11
- export { dns, fs, crypto, http, net, buffer, os, path, tls, util, };
11
+ import * as url from 'node:url';
12
+ export { dns, fs, crypto, http, net, buffer, os, path, tls, util, url, };
12
13
  import * as servezoneInterfaces from '@serve.zone/interfaces';
13
14
  import * as remoteingress from '@serve.zone/remoteingress';
14
15
  export { servezoneInterfaces, remoteingress, };
@@ -9,7 +9,8 @@ import * as os from 'node:os';
9
9
  import * as path from 'node:path';
10
10
  import * as tls from 'node:tls';
11
11
  import * as util from 'node:util';
12
- export { dns, fs, crypto, http, net, buffer, os, path, tls, util, };
12
+ import * as url from 'node:url';
13
+ export { dns, fs, crypto, http, net, buffer, os, path, tls, util, url, };
13
14
  // @serve.zone scope
14
15
  import * as servezoneInterfaces from '@serve.zone/interfaces';
15
16
  import * as remoteingress from '@serve.zone/remoteingress';
@@ -58,4 +59,4 @@ export { tsclass, };
58
59
  // third party
59
60
  import * as uuid from 'uuid';
60
61
  export { uuid, };
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFDTCxHQUFHLEVBQ0gsRUFBRSxFQUNGLE1BQU0sRUFDTixJQUFJLEVBQ0osR0FBRyxFQUNILE1BQU0sRUFDTixFQUFFLEVBQ0YsSUFBSSxFQUNKLEdBQUcsRUFDSCxJQUFJLEdBQ0wsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssbUJBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxLQUFLLGFBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUUzRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGFBQWEsR0FDZCxDQUFBO0FBRUQsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFDTCxZQUFZLEVBQ1osV0FBVyxFQUNYLFdBQVcsR0FD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
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBRWhDLE9BQU8sRUFDTCxHQUFHLEVBQ0gsRUFBRSxFQUNGLE1BQU0sRUFDTixJQUFJLEVBQ0osR0FBRyxFQUNILE1BQU0sRUFDTixFQUFFLEVBQ0YsSUFBSSxFQUNKLEdBQUcsRUFDSCxJQUFJLEVBQ0osR0FBRyxHQUNKLENBQUE7QUFFRCxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLG1CQUFtQixNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sS0FBSyxhQUFhLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixhQUFhLEdBQ2QsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FB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
@@ -5,12 +5,24 @@ export declare class GatewayClientApi {
5
5
  constructor(clientRef: DcRouterApiClient);
6
6
  getCapabilities(): Promise<servezoneInterfaces.data.IGatewayCapabilities>;
7
7
  getGatewayClientContext(): Promise<servezoneInterfaces.data.IGatewayClientContext>;
8
+ provisionCredential(options: {
9
+ provisioning: servezoneInterfaces.data.IGatewayClientProvisioningSpec;
10
+ credentialName?: string;
11
+ expiresInDays?: number | null;
12
+ }): Promise<servezoneInterfaces.requests.gateway.IReq_ProvisionGatewayClientCredential['response']>;
13
+ finalizeCredential(credential: Pick<servezoneInterfaces.data.IGatewayClientCredential, 'tokenId' | 'tokenValue'>): Promise<servezoneInterfaces.requests.gateway.IReq_FinalizeGatewayClientCredential['response']>;
14
+ getMailOverview(limit?: number): Promise<servezoneInterfaces.requests.gateway.IReq_GetGatewayClientMailOverview['response']>;
8
15
  getDomains(): Promise<servezoneInterfaces.data.IGatewayDomain[]>;
9
16
  getDnsRecords(): Promise<servezoneInterfaces.data.IGatewayDnsRecord[]>;
17
+ getRoutes(): Promise<servezoneInterfaces.data.IGatewayClientRoute[]>;
10
18
  syncRoute(options: {
11
19
  ownership: servezoneInterfaces.data.IGatewayClientOwnership;
12
20
  route: servezoneInterfaces.data.IGatewayRouteConfig;
13
21
  enabled?: boolean;
22
+ dnsMode?: servezoneInterfaces.data.TGatewayRouteDnsMode;
23
+ sourceProfileRef?: string;
24
+ }): Promise<servezoneInterfaces.data.IGatewayRouteSyncResult>;
25
+ deleteRoute(ownership: servezoneInterfaces.data.IGatewayClientOwnership, options?: {
26
+ dnsMode?: servezoneInterfaces.data.TGatewayRouteDnsMode;
14
27
  }): Promise<servezoneInterfaces.data.IGatewayRouteSyncResult>;
15
- deleteRoute(ownership: servezoneInterfaces.data.IGatewayClientOwnership): Promise<servezoneInterfaces.data.IGatewayRouteSyncResult>;
16
28
  }
@@ -11,6 +11,15 @@ export class GatewayClientApi {
11
11
  const response = await this.clientRef.request('getGatewayClientContext', this.clientRef.buildRequestPayload());
12
12
  return response.context;
13
13
  }
14
+ async provisionCredential(options) {
15
+ return await this.clientRef.request('provisionGatewayClientCredential', this.clientRef.buildRequestPayload(options));
16
+ }
17
+ async finalizeCredential(credential) {
18
+ return await this.clientRef.request('finalizeGatewayClientCredential', { apiToken: credential.tokenValue, tokenId: credential.tokenId });
19
+ }
20
+ async getMailOverview(limit) {
21
+ return await this.clientRef.request('getGatewayClientMailOverview', this.clientRef.buildRequestPayload({ limit }));
22
+ }
14
23
  async getDomains() {
15
24
  const response = await this.clientRef.request('getGatewayClientDomains', this.clientRef.buildRequestPayload());
16
25
  return response.domains;
@@ -19,18 +28,25 @@ export class GatewayClientApi {
19
28
  const response = await this.clientRef.request('getGatewayClientDnsRecords', this.clientRef.buildRequestPayload());
20
29
  return response.records;
21
30
  }
31
+ async getRoutes() {
32
+ const response = await this.clientRef.request('getGatewayClientRoutes', this.clientRef.buildRequestPayload());
33
+ return response.routes;
34
+ }
22
35
  async syncRoute(options) {
23
36
  return this.clientRef.request('syncGatewayClientRoute', this.clientRef.buildRequestPayload({
24
37
  ownership: options.ownership,
25
38
  route: options.route,
26
39
  enabled: options.enabled,
40
+ dnsMode: options.dnsMode,
41
+ sourceProfileRef: options.sourceProfileRef,
27
42
  }));
28
43
  }
29
- async deleteRoute(ownership) {
44
+ async deleteRoute(ownership, options = {}) {
30
45
  return this.clientRef.request('syncGatewayClientRoute', this.clientRef.buildRequestPayload({
31
46
  ownership,
32
47
  delete: true,
48
+ dnsMode: options.dnsMode,
33
49
  }));
34
50
  }
35
51
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5nYXRld2F5Y2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfYXBpY2xpZW50L2NsYXNzZXMuZ2F0ZXdheWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1A7SUFBcEIsWUFBb0IsU0FBNEI7UUFBNUIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7SUFBRyxDQUFDO0lBRTdDLEtBQUssQ0FBQyxlQUFlO1FBQzFCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNDLHdCQUF3QixFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFTLENBQzVDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyx1QkFBdUI7UUFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MseUJBQXlCLEVBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MseUJBQXlCLEVBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWE7UUFDeEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MsNEJBQTRCLEVBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUl0QjtRQUNDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNCLHdCQUF3QixFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1lBQ2pDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQ3pCLENBQVEsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQ3RCLFNBQTJEO1FBRTNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNCLHdCQUF3QixFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1lBQ2pDLFNBQVM7WUFDVCxNQUFNLEVBQUUsSUFBSTtTQUNiLENBQVEsQ0FDVixDQUFDO0lBQ0osQ0FBQztDQUNGIn0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5nYXRld2F5Y2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfYXBpY2xpZW50L2NsYXNzZXMuZ2F0ZXdheWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1A7SUFBcEIsWUFBb0IsU0FBNEI7UUFBNUIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7SUFBRyxDQUFDO0lBRTdDLEtBQUssQ0FBQyxlQUFlO1FBQzFCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNDLHdCQUF3QixFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFTLENBQzVDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyx1QkFBdUI7UUFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MseUJBQXlCLEVBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BSWhDO1FBQ0MsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUNqQyxrQ0FBa0MsRUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQVEsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQzdCLFVBQTZGO1FBRTdGLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDakMsaUNBQWlDLEVBQ2pDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FDakUsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUMxQixLQUFjO1FBRWQsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUNqQyw4QkFBOEIsRUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFRLENBQ3JELENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MseUJBQXlCLEVBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWE7UUFDeEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MsNEJBQTRCLEVBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVM7UUFDcEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0Msd0JBQXdCLEVBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQVMsQ0FDNUMsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQU10QjtRQUNDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNCLHdCQUF3QixFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1lBQ2pDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO1NBQzNDLENBQVEsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQ3RCLFNBQTJELEVBQzNELFVBRUksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNCLHdCQUF3QixFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1lBQ2pDLFNBQVM7WUFDVCxNQUFNLEVBQUUsSUFBSTtZQUNaLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFRLENBQ1YsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Platform configuration events — operator-facing warnings and errors that are
3
+ * not application runtime errors (e.g. a manual DNS entry overwritten by
4
+ * gateway automation, or a rejected manual mutation on an auto-managed
5
+ * record). Stored durably and acknowledgeable from the ops UI.
6
+ */
7
+ export type TOpsConfigEventSeverity = 'warning' | 'error';
8
+ /** Stable seek position for descending platform-event pages. */
9
+ export interface IOpsConfigEventCursor {
10
+ createdAt: number;
11
+ id: string;
12
+ }
13
+ export interface IOpsConfigEventContext {
14
+ domain?: string;
15
+ recordName?: string;
16
+ previousValue?: string;
17
+ newValue?: string;
18
+ routeRef?: string;
19
+ actor?: string;
20
+ }
21
+ export interface IOpsConfigEvent {
22
+ id: string;
23
+ severity: TOpsConfigEventSeverity;
24
+ /** Producer-defined event class, e.g. 'dns-conflict'. */
25
+ category: string;
26
+ /** Short human-readable summary. */
27
+ title: string;
28
+ /** Full explanation of what happened and why. */
29
+ detail: string;
30
+ context: IOpsConfigEventContext;
31
+ createdAt: number;
32
+ acknowledgedBy?: string;
33
+ acknowledgedAt?: number;
34
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Platform configuration events — operator-facing warnings and errors that are
3
+ * not application runtime errors (e.g. a manual DNS entry overwritten by
4
+ * gateway automation, or a rejected manual mutation on an auto-managed
5
+ * record). Stored durably and acknowledgeable from the ops UI.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvZGF0YS9jb25maWctZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHIn0=
@@ -12,3 +12,4 @@ export * from './acme-config.js';
12
12
  export * from './email-domain.js';
13
13
  export * from './email-settings.js';
14
14
  export * from './security-policy.js';
15
+ export * from './config-events.js';
@@ -12,4 +12,5 @@ export * from './acme-config.js';
12
12
  export * from './email-domain.js';
13
13
  export * from './email-settings.js';
14
14
  export * from './security-policy.js';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL2RhdGEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQyJ9
15
+ export * from './config-events.js';
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL2RhdGEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDIn0=
@@ -1,5 +1,6 @@
1
1
  import type { IRouteConfig } from '@push.rocks/smartproxy';
2
2
  import type { IRouteChallengeConfig } from '@push.rocks/smartchallenge';
3
+ import type * as servezoneInterfaces from '@serve.zone/interfaces';
3
4
  import type { IDcRouterRouteConfig, IRouteRemoteIngress } from './remoteingress.js';
4
5
  type TSmartProxyRouteRateLimit = NonNullable<NonNullable<IRouteConfig['security']>['rateLimit']>;
5
6
  export type TRouteRateLimitExceededPolicy = NonNullable<TSmartProxyRouteRateLimit['onExceeded']>;
@@ -11,7 +12,7 @@ export interface IRouteSecurity extends TSmartProxyRouteSecurityBase {
11
12
  rateLimit?: IRouteRateLimit | null;
12
13
  challenge?: IRouteChallengeConfig | null;
13
14
  }
14
- export declare const apiTokenScopes: readonly ["*", "routes:read", "routes:write", "config:read", "stats:read", "logs:read", "security:read", "security:write", "emails:read", "emails:write", "certificates:read", "certificates:write", "tokens:read", "tokens:manage", "users:read", "users:manage", "source-profiles:read", "source-profiles:write", "target-profiles:read", "target-profiles:write", "targets:read", "targets:write", "dns-providers:read", "dns-providers:write", "domains:read", "domains:write", "dns-records:read", "dns-records:write", "acme-config:read", "acme-config:write", "email-domains:read", "email-domains:write", "remote-ingress:read", "remote-ingress:write", "vpn:read", "vpn:write", "radius:read", "radius:write", "gateway-clients:read", "gateway-clients:write", "workhosters:read", "workhosters:write"];
15
+ export declare const apiTokenScopes: readonly ["*", "routes:read", "routes:write", "config:read", "stats:read", "logs:read", "config-events:read", "config-events:write", "security:read", "security:write", "emails:read", "emails:write", "certificates:read", "certificates:write", "tokens:read", "tokens:manage", "users:read", "users:manage", "source-profiles:read", "source-profiles:write", "target-profiles:read", "target-profiles:write", "targets:read", "targets:write", "dns-providers:read", "dns-providers:write", "domains:read", "domains:write", "dns-records:read", "dns-records:write", "acme-config:read", "acme-config:write", "email-domains:read", "email-domains:write", "remote-ingress:read", "remote-ingress:write", "vpn:read", "vpn:write", "radius:read", "radius:write", "gateway-clients:read", "gateway-clients:write", "workhosters:read", "workhosters:write"];
15
16
  export type TApiTokenScope = typeof apiTokenScopes[number];
16
17
  export type TGatewayClientType = 'onebox' | 'cloudly' | 'custom';
17
18
  export interface IApiTokenPolicy {
@@ -20,20 +21,42 @@ export interface IApiTokenPolicy {
20
21
  gatewayClient?: {
21
22
  type: TGatewayClientType;
22
23
  id: string;
24
+ policyGeneration: number;
23
25
  };
24
26
  hostnamePatterns?: string[];
25
27
  allowedRouteTargets?: Array<{
26
28
  host: string;
27
29
  ports: number[];
30
+ allowAnyPort?: boolean;
28
31
  }>;
29
32
  capabilities?: {
30
33
  readDomains?: boolean;
31
34
  readDnsRecords?: boolean;
35
+ readRoutes?: boolean;
32
36
  syncRoutes?: boolean;
33
37
  syncDnsRecords?: boolean;
38
+ readMail?: boolean;
39
+ manageMail?: boolean;
40
+ readCertificates?: boolean;
34
41
  requestCertificates?: boolean;
35
42
  };
36
43
  }
44
+ export interface IGatewayCredentialLifecycle {
45
+ source: 'provisioned';
46
+ state: 'candidate' | 'active';
47
+ /** Strictly monotonic within one gateway client. */
48
+ sequence: number;
49
+ /** Generation this credential was issued to activate. */
50
+ policyGeneration: number;
51
+ /** Digest of the exact durable policy snapshot this credential may activate. */
52
+ policyDigest: string;
53
+ /** Set once when a provisioned candidate first becomes active. */
54
+ finalizedAt: number | null;
55
+ /** Set only after older provisioned credentials have been durably cleaned up. */
56
+ cleanupCompletedAt: number | null;
57
+ /** Stable response value retained for idempotent finalization retries. */
58
+ revokedCredentialCount: number | null;
59
+ }
37
60
  /**
38
61
  * A reusable, named source profile that can be referenced by routes.
39
62
  * Stores the full IRouteSecurity shape from SmartProxy.
@@ -137,6 +160,8 @@ export interface IRouteMetadata {
137
160
  gatewayClientId?: string;
138
161
  gatewayClientAppId?: string;
139
162
  externalKey?: string;
163
+ /** Persisted DNS intent for gateway route reconciliation. */
164
+ gatewayDnsMode?: servezoneInterfaces.data.TGatewayRouteDnsMode;
140
165
  /** Canonical server-managed route purpose. */
141
166
  managedRouteKind?: TManagedRouteKind;
142
167
  }
@@ -219,6 +244,8 @@ export interface IStoredApiToken {
219
244
  tokenHash: string;
220
245
  scopes: TApiTokenScope[];
221
246
  policy?: IApiTokenPolicy;
247
+ /** Null/absent means an ordinary manually issued token. */
248
+ gatewayCredentialLifecycle?: IGatewayCredentialLifecycle | null;
222
249
  createdAt: number;
223
250
  expiresAt: number | null;
224
251
  lastUsedAt: number | null;
@@ -8,6 +8,8 @@ export const apiTokenScopes = [
8
8
  'config:read',
9
9
  'stats:read',
10
10
  'logs:read',
11
+ 'config-events:read',
12
+ 'config-events:write',
11
13
  'security:read',
12
14
  'security:write',
13
15
  'emails:read',
@@ -118,4 +120,4 @@ export function canonicalizeSourceRouteId(routeId) {
118
120
  const sourceVariantIndex = routeId.indexOf(':source:');
119
121
  return sourceVariantIndex === -1 ? routeId : routeId.slice(0, sourceVariantIndex);
120
122
  }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvZGF0YS9yb3V0ZS1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9CQSwrRUFBK0U7QUFDL0UsOEJBQThCO0FBQzlCLCtFQUErRTtBQUUvRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsR0FBRztJQUNILGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLFlBQVk7SUFDWixXQUFXO0lBQ1gsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsY0FBYztJQUNkLG1CQUFtQjtJQUNuQixvQkFBb0I7SUFDcEIsYUFBYTtJQUNiLGVBQWU7SUFDZixZQUFZO0lBQ1osY0FBYztJQUNkLHNCQUFzQjtJQUN0Qix1QkFBdUI7SUFDdkIsc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixjQUFjO0lBQ2QsZUFBZTtJQUNmLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsY0FBYztJQUNkLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsc0JBQXNCO0lBQ3RCLFVBQVU7SUFDVixXQUFXO0lBQ1gsYUFBYTtJQUNiLGNBQWM7SUFDZCxzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLGtCQUFrQjtJQUNsQixtQkFBbUI7Q0FDWCxDQUFDO0FBd0RYLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLGdCQUFnQjtJQUNoQixRQUFRO0lBQ1IsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixLQUFLO0lBQ0wsU0FBUztDQUNELENBQUM7QUFJWCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBb0M7SUFDeEUsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ2xDLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLGFBQWEsRUFBRSxhQUFhO0lBQzVCLGdCQUFnQixFQUFFLGdCQUFnQjtJQUNsQyxHQUFHLEVBQUUsV0FBVztJQUNoQixPQUFPLEVBQUUsVUFBVTtDQUNwQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQXNDO0lBQzVFLGdCQUFnQixFQUFFO1FBQ2hCLG9CQUFvQjtRQUNwQiwwQkFBMEI7UUFDMUIsMkJBQTJCO1FBQzNCLG1CQUFtQjtRQUNuQixxQkFBcUI7S0FDdEI7SUFDRCxNQUFNLEVBQUU7UUFDTixXQUFXO1FBQ1gsWUFBWTtRQUNaLGlCQUFpQjtRQUNqQixnQkFBZ0I7UUFDaEIsUUFBUTtRQUNSLFFBQVE7UUFDUixPQUFPO1FBQ1AsVUFBVTtRQUNWLGNBQWM7S0FDZjtJQUNELGFBQWEsRUFBRSxFQUFFO0lBQ2pCLGdCQUFnQixFQUFFO1FBQ2hCLFlBQVk7UUFDWixTQUFTO1FBQ1QsV0FBVztRQUNYLFFBQVE7UUFDUixVQUFVO1FBQ1YsU0FBUztRQUNULGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osZUFBZTtRQUNmLFlBQVk7UUFDWixZQUFZO1FBQ1osZUFBZTtRQUNmLGFBQWE7UUFDYixZQUFZO1FBQ1osZUFBZTtRQUNmLGNBQWM7UUFDZCxlQUFlO0tBQ2hCO0lBQ0QsR0FBRyxFQUFFO1FBQ0gsWUFBWTtRQUNaLFlBQVk7S0FDYjtJQUNELE9BQU8sRUFBRTtRQUNQLGdCQUFnQjtRQUNoQiwwQkFBMEI7S0FDM0I7Q0FDRixDQUFDO0FBbURGLCtFQUErRTtBQUMvRSx1QkFBdUI7QUFDdkIsK0VBQStFO0FBRS9FLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsNEJBQTRCLENBQVUsQ0FBQztBQXFGekUsZ0ZBQWdGO0FBQ2hGLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxPQUFlO0lBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxPQUFPLGtCQUFrQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFDcEYsQ0FBQyJ9
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvZGF0YS9yb3V0ZS1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCQSwrRUFBK0U7QUFDL0UsOEJBQThCO0FBQzlCLCtFQUErRTtBQUUvRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsR0FBRztJQUNILGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLFlBQVk7SUFDWixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixjQUFjO0lBQ2QsbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixhQUFhO0lBQ2IsZUFBZTtJQUNmLFlBQVk7SUFDWixjQUFjO0lBQ2Qsc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixjQUFjO0lBQ2QsZUFBZTtJQUNmLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixvQkFBb0I7SUFDcEIscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsVUFBVTtJQUNWLFdBQVc7SUFDWCxhQUFhO0lBQ2IsY0FBYztJQUNkLHNCQUFzQjtJQUN0Qix1QkFBdUI7SUFDdkIsa0JBQWtCO0lBQ2xCLG1CQUFtQjtDQUNYLENBQUM7QUErRVgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsZ0JBQWdCO0lBQ2hCLFFBQVE7SUFDUixhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLEtBQUs7SUFDTCxTQUFTO0NBQ0QsQ0FBQztBQUlYLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFvQztJQUN4RSxnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFDbEMsTUFBTSxFQUFFLGVBQWU7SUFDdkIsYUFBYSxFQUFFLGFBQWE7SUFDNUIsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLE9BQU8sRUFBRSxVQUFVO0NBQ3BCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBc0M7SUFDNUUsZ0JBQWdCLEVBQUU7UUFDaEIsb0JBQW9CO1FBQ3BCLDBCQUEwQjtRQUMxQiwyQkFBMkI7UUFDM0IsbUJBQW1CO1FBQ25CLHFCQUFxQjtLQUN0QjtJQUNELE1BQU0sRUFBRTtRQUNOLFdBQVc7UUFDWCxZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLGdCQUFnQjtRQUNoQixRQUFRO1FBQ1IsUUFBUTtRQUNSLE9BQU87UUFDUCxVQUFVO1FBQ1YsY0FBYztLQUNmO0lBQ0QsYUFBYSxFQUFFLEVBQUU7SUFDakIsZ0JBQWdCLEVBQUU7UUFDaEIsWUFBWTtRQUNaLFNBQVM7UUFDVCxXQUFXO1FBQ1gsUUFBUTtRQUNSLFVBQVU7UUFDVixTQUFTO1FBQ1QsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixlQUFlO1FBQ2YsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlO1FBQ2YsYUFBYTtRQUNiLFlBQVk7UUFDWixlQUFlO1FBQ2YsY0FBYztRQUNkLGVBQWU7S0FDaEI7SUFDRCxHQUFHLEVBQUU7UUFDSCxZQUFZO1FBQ1osWUFBWTtLQUNiO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsZ0JBQWdCO1FBQ2hCLDBCQUEwQjtLQUMzQjtDQUNGLENBQUM7QUFtREYsK0VBQStFO0FBQy9FLHVCQUF1QjtBQUN2QiwrRUFBK0U7QUFFL0UsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBVSxDQUFDO0FBdUZ6RSxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE9BQWU7SUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sa0JBQWtCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUNwRixDQUFDIn0=
@@ -9,6 +9,7 @@ export interface IGatewayClient {
9
9
  capabilities: NonNullable<IApiTokenPolicy['capabilities']>;
10
10
  enabled: boolean;
11
11
  tokenCount?: number;
12
+ policyGeneration: number;
12
13
  createdAt: number;
13
14
  updatedAt: number;
14
15
  createdBy: string;
@@ -0,0 +1,35 @@
1
+ import * as plugins from '../plugins.js';
2
+ import * as authInterfaces from '../data/auth.js';
3
+ import * as configEventInterfaces from '../data/config-events.js';
4
+ export interface IReq_ListConfigEvents extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ListConfigEvents> {
5
+ method: 'listConfigEvents';
6
+ request: {
7
+ identity?: authInterfaces.IIdentity;
8
+ apiToken?: string;
9
+ /** Filter by acknowledgement state; omit for all events. */
10
+ acknowledged?: boolean;
11
+ severity?: configEventInterfaces.TOpsConfigEventSeverity;
12
+ category?: string;
13
+ limit?: number;
14
+ cursor?: configEventInterfaces.IOpsConfigEventCursor;
15
+ };
16
+ response: {
17
+ events: configEventInterfaces.IOpsConfigEvent[];
18
+ total: number;
19
+ unacknowledgedCount: number;
20
+ nextCursor?: configEventInterfaces.IOpsConfigEventCursor;
21
+ };
22
+ }
23
+ export interface IReq_AcknowledgeConfigEvents extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_AcknowledgeConfigEvents> {
24
+ method: 'acknowledgeConfigEvents';
25
+ request: {
26
+ identity?: authInterfaces.IIdentity;
27
+ apiToken?: string;
28
+ ids: string[];
29
+ };
30
+ response: {
31
+ success: boolean;
32
+ acknowledgedCount: number;
33
+ message?: string;
34
+ };
35
+ }
@@ -0,0 +1,4 @@
1
+ import * as plugins from '../plugins.js';
2
+ import * as authInterfaces from '../data/auth.js';
3
+ import * as configEventInterfaces from '../data/config-events.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2ludGVyZmFjZXMvcmVxdWVzdHMvY29uZmlnLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssY0FBYyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxxQkFBcUIsTUFBTSwwQkFBMEIsQ0FBQyJ9
@@ -23,3 +23,4 @@ export * from './email-settings.js';
23
23
  export * from './realtime.js';
24
24
  export * from './workhoster.js';
25
25
  export * from './security-policy.js';
26
+ export * from './config-events.js';
@@ -23,4 +23,5 @@ export * from './email-settings.js';
23
23
  export * from './realtime.js';
24
24
  export * from './workhoster.js';
25
25
  export * from './security-policy.js';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL3JlcXVlc3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUMifQ==
26
+ export * from './config-events.js';
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL3JlcXVlc3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQyJ9
@@ -1,6 +1,6 @@
1
1
  import * as plugins from '../plugins.js';
2
2
  import type { IIdentity } from '../data/auth.js';
3
- export declare const opsRealtimeResources: readonly ["emailDomains", "emailQueue", "smtpAttempts", "dns", "routes", "edges", "certificates"];
3
+ export declare const opsRealtimeResources: readonly ["emailDomains", "emailQueue", "smtpAttempts", "dns", "routes", "edges", "certificates", "configEvents"];
4
4
  export type TOpsRealtimeResource = (typeof opsRealtimeResources)[number];
5
5
  export type IOpsRealtimeRevisionMap = Record<TOpsRealtimeResource, number>;
6
6
  export interface IOpsRealtimeInvalidation {
@@ -7,5 +7,6 @@ export const opsRealtimeResources = [
7
7
  'routes',
8
8
  'edges',
9
9
  'certificates',
10
+ 'configEvents',
10
11
  ];
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbHRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL3JlcXVlc3RzL3JlYWx0aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLGNBQWM7SUFDZCxZQUFZO0lBQ1osY0FBYztJQUNkLEtBQUs7SUFDTCxRQUFRO0lBQ1IsT0FBTztJQUNQLGNBQWM7Q0FDTixDQUFDIn0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbHRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19pbnRlcmZhY2VzL3JlcXVlc3RzL3JlYWx0aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLGNBQWM7SUFDZCxZQUFZO0lBQ1osY0FBYztJQUNkLEtBQUs7SUFDTCxRQUFRO0lBQ1IsT0FBTztJQUNQLGNBQWM7SUFDZCxjQUFjO0NBQ04sQ0FBQyJ9