@substrat-run/control-plane-api 0.132.1 → 0.134.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/dist/api.d.ts.map +1 -1
- package/dist/api.js +12 -2
- package/dist/api.js.map +1 -1
- package/dist/browser.d.ts +12 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +10 -0
- package/dist/browser.js.map +1 -0
- package/dist/client.d.ts +4 -30
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -79
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -15
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/platform-drain.d.ts.map +1 -1
- package/dist/platform-drain.js +3 -3
- package/dist/platform-drain.js.map +1 -1
- package/dist/staff-client.d.ts +398 -0
- package/dist/staff-client.d.ts.map +1 -0
- package/dist/staff-client.js +299 -0
- package/dist/staff-client.js.map +1 -0
- package/dist/transport.d.ts +56 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +88 -0
- package/dist/transport.js.map +1 -0
- package/package.json +10 -6
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import type { AdminAction, AdminLogEntry, ChannelName, ConnectionHealthPage, ConnectionHealthState, DenialFilter, DenialSummary, DirectoryBackup, EdgeHealthReport, EntitlementGrant, EntitlementGrantInput, ExportBreak, HostnameBinding, HostnameStatus, ImportCursorMove, ImportCursorMoved, IssueEntry, IssueStatus, IssueStatusInput, MeterReading, MigrationDiff, MigrationProgress, ModelUsageSummary, ModuleId, OpsFailureEntry, Page, PeerGrantsStatusEntry, PeerSwitchResult, PermissionDenial, PermissionRegistry, PlatformRequestBacklog, PromotionAcknowledgement, Scope, ScopeBackup, ScopeId, ScopeStatus, StorageMeterReading, SweepRunEntry, SweepRunKind, SystemGrantsStatusEntry, SystemSwitchRecord, SystemSwitchResult, Tenant, TenantId, TenantRole, TenantStatus, Vertical, VerticalChannel, VerticalSource, VerticalVersion } from '@substrat-run/contracts';
|
|
2
|
+
import type { BlobStoreRecord, TenantStoreRecord } from '@substrat-run/kernel';
|
|
3
|
+
import type { ClientProvisionScopeInput } from './client.js';
|
|
4
|
+
import type { DoNamespaceRecord } from './do-namespaces.js';
|
|
5
|
+
import type { ConnectorCallsBucket } from './observability.js';
|
|
6
|
+
import type { PlatformRuntime } from './platform-runtime.js';
|
|
7
|
+
import { ControlPlaneTransport } from './transport.js';
|
|
8
|
+
/**
|
|
9
|
+
* The staff surface of the control-plane API as one typed client — what the console
|
|
10
|
+
* calls (#971). Where `ControlPlaneClient` is the vertical's connect seam (register a
|
|
11
|
+
* tenant, gate on the lifecycle), this is the whole operator vocabulary: tenants, scopes,
|
|
12
|
+
* the fleet reads, the vertical + version registry, the audit and failure logs.
|
|
13
|
+
*
|
|
14
|
+
* It shares everything about HOW a request is made with `ControlPlaneClient` — one
|
|
15
|
+
* transport, one error (`ControlPlaneError`), one reading of a problem document. The two
|
|
16
|
+
* are siblings rather than parent and child on purpose: they overlap in name (`getTenant`
|
|
17
|
+
* answers `undefined` on a 404 in the connect seam, which gates on absence, and throws
|
|
18
|
+
* here, where a missing tenant is a page-level failure) and a subclass would have made the
|
|
19
|
+
* connect seam's gate dispatch to the staff reading.
|
|
20
|
+
*
|
|
21
|
+
* Every method is an arrow-function property, not a prototype method, deliberately: the
|
|
22
|
+
* console hands them around unbound (`{ suspend: api.suspendScope }`), as it always has,
|
|
23
|
+
* and a prototype method would lose its `this` there.
|
|
24
|
+
*
|
|
25
|
+
* Answers are typed, not parsed — the same trust the console's hand-rolled client had.
|
|
26
|
+
*/
|
|
27
|
+
/** One service's invocation aggregates — the control plane's observability proxy
|
|
28
|
+
* (provider-neutral seam; Cloudflare analytics is the current backend). */
|
|
29
|
+
export interface ServiceMetricsRow {
|
|
30
|
+
service: string;
|
|
31
|
+
/** Set for pushed verticals (the platform's dispatch pool), null for platform services. */
|
|
32
|
+
namespace: string | null;
|
|
33
|
+
requests: number;
|
|
34
|
+
errors: number;
|
|
35
|
+
subrequests: number;
|
|
36
|
+
/** Per-request CPU time quantiles, microseconds. */
|
|
37
|
+
cpuTimeP50: number;
|
|
38
|
+
cpuTimeP99: number;
|
|
39
|
+
}
|
|
40
|
+
/** One log event from the control plane's observability proxy. */
|
|
41
|
+
export interface RecentLogEvent {
|
|
42
|
+
timestamp: number | null;
|
|
43
|
+
level: string | null;
|
|
44
|
+
message: string | null;
|
|
45
|
+
service: string | null;
|
|
46
|
+
outcome: string | null;
|
|
47
|
+
raw: unknown;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* One destination a deployed version was OBSERVED reaching (#859, D-46), joined with
|
|
51
|
+
* whether its manifest DECLARED it.
|
|
52
|
+
*/
|
|
53
|
+
export interface ObservedEgressRow {
|
|
54
|
+
service: string;
|
|
55
|
+
host: string;
|
|
56
|
+
/** `durable-object` egress is the half the egress worker cannot intercept (D-46). */
|
|
57
|
+
origin: 'worker' | 'durable-object' | 'unknown';
|
|
58
|
+
calls: number;
|
|
59
|
+
lastSeen: number | null;
|
|
60
|
+
sampleUrl: string | null;
|
|
61
|
+
/** The version's declared surface; null = pushed before the declaration existed. */
|
|
62
|
+
declared: string[] | null;
|
|
63
|
+
/** Reached a host the declaration does not cover. Always false when `unenforced`. */
|
|
64
|
+
undeclared: boolean;
|
|
65
|
+
/** The version declares nothing, so the egress worker meters but does not enforce. */
|
|
66
|
+
unenforced: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface EgressReport {
|
|
69
|
+
rows: ObservedEgressRow[];
|
|
70
|
+
byService: {
|
|
71
|
+
service: string;
|
|
72
|
+
versionId: string;
|
|
73
|
+
version: string;
|
|
74
|
+
declared: string[] | null;
|
|
75
|
+
/** Declared but never seen in the window. Not a fault — a quiet window proves nothing. */
|
|
76
|
+
unused: string[];
|
|
77
|
+
}[];
|
|
78
|
+
/** The read was capped, so the host set is a FLOOR. Must be said out loud (#859). */
|
|
79
|
+
truncated: boolean;
|
|
80
|
+
servicesTruncated: boolean;
|
|
81
|
+
versionsConsidered: number;
|
|
82
|
+
versionsTotal: number;
|
|
83
|
+
/** Head sampling rate, or null for "coverage unknown" — not the same as 1. */
|
|
84
|
+
samplingRate: number | null;
|
|
85
|
+
hours: number;
|
|
86
|
+
}
|
|
87
|
+
/** A staff roster row (CP `staff_actor`) — who may act on the control plane. */
|
|
88
|
+
export interface StaffMember {
|
|
89
|
+
email: string;
|
|
90
|
+
/** Their identity in the admin log; null when the stored value is malformed. */
|
|
91
|
+
actor: string | null;
|
|
92
|
+
name: string | null;
|
|
93
|
+
addedAt: string;
|
|
94
|
+
/** Who granted it — null for rows that predate the Members surface. */
|
|
95
|
+
addedBy: string | null;
|
|
96
|
+
revokedAt: string | null;
|
|
97
|
+
}
|
|
98
|
+
export interface MembersReading {
|
|
99
|
+
staff: StaffMember[];
|
|
100
|
+
}
|
|
101
|
+
/** The tenant's platform-minted stores, as the console reads them (#301, #473). */
|
|
102
|
+
export interface TenantStores {
|
|
103
|
+
tenantStores: TenantStoreRecord[];
|
|
104
|
+
blobStores: BlobStoreRecord[];
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The ONE pagination convention (contracts pagination.ts): every list route takes
|
|
108
|
+
* `?limit&cursor&order` (limit defaults 20, max 200 at the egress) and answers
|
|
109
|
+
* `{ entries, nextCursor }`. The admin log shipped this shape first; every list
|
|
110
|
+
* call below now speaks it, so a view walks any list the way AdminLog always has.
|
|
111
|
+
*/
|
|
112
|
+
export interface PageQuery {
|
|
113
|
+
limit?: number;
|
|
114
|
+
cursor?: string;
|
|
115
|
+
order?: 'asc' | 'desc';
|
|
116
|
+
}
|
|
117
|
+
/** The admin-log page — now just the shared envelope (kept as the historical name). */
|
|
118
|
+
export type AdminLogPage = Page<AdminLogEntry>;
|
|
119
|
+
export interface AuditLogQuery extends PageQuery {
|
|
120
|
+
tenantId?: TenantId;
|
|
121
|
+
scopeId?: ScopeId;
|
|
122
|
+
actor?: string;
|
|
123
|
+
action?: AdminAction[];
|
|
124
|
+
since?: string;
|
|
125
|
+
until?: string;
|
|
126
|
+
}
|
|
127
|
+
/** The sweep-record filter (#1232) — mirrors SweepRunFilter, minus the cursor triple PageQuery carries. */
|
|
128
|
+
export interface SweepRunsQuery extends PageQuery {
|
|
129
|
+
kind?: SweepRunKind;
|
|
130
|
+
unit?: string;
|
|
131
|
+
outcome?: 'ok' | 'failed' | 'skipped';
|
|
132
|
+
tenantId?: TenantId;
|
|
133
|
+
scopeId?: ScopeId;
|
|
134
|
+
vertical?: string;
|
|
135
|
+
connectionId?: string;
|
|
136
|
+
since?: string;
|
|
137
|
+
until?: string;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* `GET /connections/health` (#1690) — `status` is the DERIVED health state. No `order`:
|
|
141
|
+
* the walk is ascending by connection id only, and the route refuses `desc`.
|
|
142
|
+
*/
|
|
143
|
+
export interface ConnectionHealthQuery extends Omit<PageQuery, 'order'> {
|
|
144
|
+
status?: ConnectionHealthState;
|
|
145
|
+
/** Free text, matched server-side before paging — so it finds rows on any page. */
|
|
146
|
+
q?: string;
|
|
147
|
+
provider?: string;
|
|
148
|
+
tenantId?: TenantId;
|
|
149
|
+
}
|
|
150
|
+
/** The ops-failure list's server-side narrowing (#559) — `reference` is an exact
|
|
151
|
+
* match, the `reference = <id>` a CI log hands the operator. */
|
|
152
|
+
export interface OpsFailuresQuery extends PageQuery {
|
|
153
|
+
tenantId?: TenantId;
|
|
154
|
+
scopeId?: ScopeId;
|
|
155
|
+
vertical?: string;
|
|
156
|
+
operation?: string;
|
|
157
|
+
/** The taxonomy code — the error-shape narrowing (#1233). */
|
|
158
|
+
code?: string;
|
|
159
|
+
/** One issue's exemplar rows (#1233) — the jump from Operations → Issues. */
|
|
160
|
+
fingerprint?: string;
|
|
161
|
+
reference?: string;
|
|
162
|
+
since?: string;
|
|
163
|
+
until?: string;
|
|
164
|
+
}
|
|
165
|
+
/** `GET /system-switches` (#1674) — the fleet read of the schedule kill switch. */
|
|
166
|
+
export interface SystemSwitchesQuery extends PageQuery {
|
|
167
|
+
position?: 'on' | 'off' | 'all';
|
|
168
|
+
tenantId?: TenantId;
|
|
169
|
+
scopeId?: ScopeId;
|
|
170
|
+
moduleId?: ModuleId;
|
|
171
|
+
vertical?: string;
|
|
172
|
+
}
|
|
173
|
+
/** The issues read (#1233). No cursor by design — grouping IS the compression. */
|
|
174
|
+
export interface IssuesQuery {
|
|
175
|
+
status?: IssueStatus;
|
|
176
|
+
operation?: string;
|
|
177
|
+
code?: string;
|
|
178
|
+
limit?: number;
|
|
179
|
+
}
|
|
180
|
+
export type { ConnectorCallsBucket, PlatformRuntime };
|
|
181
|
+
/** One Durable Object namespace as Cloudflare describes it. */
|
|
182
|
+
export type DoNamespace = DoNamespaceRecord;
|
|
183
|
+
/** A scope's health, as `GET …/scopes/:id/health` answers it (#321, #825). */
|
|
184
|
+
export interface ScopeHealth {
|
|
185
|
+
scopeId: ScopeId;
|
|
186
|
+
status: string;
|
|
187
|
+
servingRef: string | null;
|
|
188
|
+
roleCount: number | null;
|
|
189
|
+
roleProjectionEmpty: boolean;
|
|
190
|
+
missingStores?: {
|
|
191
|
+
binding: string;
|
|
192
|
+
kind: 'relational' | 'blob';
|
|
193
|
+
}[];
|
|
194
|
+
}
|
|
195
|
+
/** What the connect seam provisions, plus the storage shape the console picks. */
|
|
196
|
+
export interface ProvisionScopeInput extends ClientProvisionScopeInput {
|
|
197
|
+
storageShape?: 'A' | 'B';
|
|
198
|
+
}
|
|
199
|
+
export interface RebindScopeResult {
|
|
200
|
+
servingRef: string;
|
|
201
|
+
versionId: string;
|
|
202
|
+
alreadyBound?: boolean;
|
|
203
|
+
tables?: number;
|
|
204
|
+
}
|
|
205
|
+
export interface BindHostnameInput {
|
|
206
|
+
hostname: string;
|
|
207
|
+
tenantId: TenantId;
|
|
208
|
+
scopeId: ScopeId;
|
|
209
|
+
surface: string;
|
|
210
|
+
region?: 'eu' | null;
|
|
211
|
+
canonical?: boolean;
|
|
212
|
+
}
|
|
213
|
+
export declare class ControlPlaneStaffClient extends ControlPlaneTransport {
|
|
214
|
+
private json;
|
|
215
|
+
private post;
|
|
216
|
+
listTenants: (page?: PageQuery) => Promise<Page<Tenant>>;
|
|
217
|
+
getTenant: (id: TenantId) => Promise<Tenant>;
|
|
218
|
+
createTenant: (input: {
|
|
219
|
+
id: TenantId;
|
|
220
|
+
slug: string;
|
|
221
|
+
name: string;
|
|
222
|
+
}) => Promise<Tenant>;
|
|
223
|
+
setTenantStatus: (id: TenantId, status: TenantStatus) => Promise<Tenant>;
|
|
224
|
+
reapTenant: (id: TenantId) => Promise<Tenant>;
|
|
225
|
+
tenantStores: (id: TenantId) => Promise<TenantStores>;
|
|
226
|
+
listEntitlements: (id: TenantId) => Promise<EntitlementGrant[]>;
|
|
227
|
+
grantEntitlement: (id: TenantId, key: string, plan?: EntitlementGrantInput) => Promise<EntitlementGrant[]>;
|
|
228
|
+
revokeEntitlement: (id: TenantId, key: string) => Promise<EntitlementGrant[]>;
|
|
229
|
+
platformRuntime: () => Promise<PlatformRuntime | null>;
|
|
230
|
+
doNamespaces: (script: string) => Promise<DoNamespace[]>;
|
|
231
|
+
readMeters: (tenantId?: TenantId) => Promise<MeterReading>;
|
|
232
|
+
readStorage: (tenantId: TenantId, cursor?: ScopeId) => Promise<StorageMeterReading>;
|
|
233
|
+
readModelUsage: (q?: {
|
|
234
|
+
tenantId?: TenantId;
|
|
235
|
+
since?: string;
|
|
236
|
+
until?: string;
|
|
237
|
+
}) => Promise<ModelUsageSummary>;
|
|
238
|
+
listScopes: (filter?: {
|
|
239
|
+
tenantId?: TenantId;
|
|
240
|
+
status?: ScopeStatus[];
|
|
241
|
+
vertical?: string;
|
|
242
|
+
} & PageQuery) => Promise<Page<Scope>>;
|
|
243
|
+
migrationProgress: (vertical?: string) => Promise<MigrationProgress>;
|
|
244
|
+
getScope: (tenantId: TenantId, scopeId: ScopeId) => Promise<Scope>;
|
|
245
|
+
scopeHealth: (tenantId: TenantId, scopeId: ScopeId) => Promise<ScopeHealth>;
|
|
246
|
+
denialSummary: (t: TenantId, s: ScopeId, filter?: DenialFilter) => Promise<DenialSummary>;
|
|
247
|
+
listDenials: (t: TenantId, s: ScopeId, filter?: DenialFilter) => Promise<PermissionDenial[]>;
|
|
248
|
+
systemGrantsStatus: (t: TenantId, s: ScopeId) => Promise<SystemGrantsStatusEntry[]>;
|
|
249
|
+
switchScheduleOff: (t: TenantId, s: ScopeId, moduleId: ModuleId, reason: string) => Promise<SystemSwitchResult>;
|
|
250
|
+
switchScheduleOn: (t: TenantId, s: ScopeId, moduleId: ModuleId, reason: string) => Promise<SystemSwitchResult>;
|
|
251
|
+
peerGrantsStatus: (t: TenantId, s: ScopeId) => Promise<PeerGrantsStatusEntry[]>;
|
|
252
|
+
switchPeerOff: (t: TenantId, s: ScopeId, vertical: string, reason: string) => Promise<PeerSwitchResult>;
|
|
253
|
+
switchPeerOn: (t: TenantId, s: ScopeId, vertical: string, reason: string) => Promise<PeerSwitchResult>;
|
|
254
|
+
crossVerticalEdges: (t: TenantId, focus?: ScopeId) => Promise<EdgeHealthReport>;
|
|
255
|
+
moveImportCursor: (t: TenantId, s: ScopeId, move: ImportCursorMove) => Promise<ImportCursorMoved>;
|
|
256
|
+
provisionScope: (input: ProvisionScopeInput) => Promise<Scope>;
|
|
257
|
+
activateScope: (t: TenantId, s: ScopeId) => Promise<Scope>;
|
|
258
|
+
suspendScope: (t: TenantId, s: ScopeId) => Promise<Scope>;
|
|
259
|
+
unsuspendScope: (t: TenantId, s: ScopeId) => Promise<Scope>;
|
|
260
|
+
/**
|
|
261
|
+
* Re-run the vertical's provision for a scope that already has one — NOT a status
|
|
262
|
+
* transition, which is why it sits outside the ladder above and outside
|
|
263
|
+
* `availableActions`. Nothing about the scope's state changes; what happens is that
|
|
264
|
+
* everything provisioning delivers is delivered again: entitlements, identity links,
|
|
265
|
+
* connection grants, and the vertical's OWN `onProvision` hook.
|
|
266
|
+
*
|
|
267
|
+
* Idempotent at the far end (K-31), so it is safe to press twice. It is the lever
|
|
268
|
+
* for two shapes of stuck install: the #332 lockout (roles projected, zero tuples,
|
|
269
|
+
* every login denied), and an install that predates something its vertical now mints
|
|
270
|
+
* for itself at provision — a new service principal, say — which no other path can
|
|
271
|
+
* ever deliver, because provision runs at install and never again.
|
|
272
|
+
*/
|
|
273
|
+
reprovisionScope: (t: TenantId, s: ScopeId) => Promise<Scope>;
|
|
274
|
+
archiveScope: (t: TenantId, s: ScopeId) => Promise<Scope>;
|
|
275
|
+
unarchiveScope: (t: TenantId, s: ScopeId) => Promise<Scope>;
|
|
276
|
+
reapScope: (t: TenantId, s: ScopeId, opts?: {
|
|
277
|
+
backup?: boolean;
|
|
278
|
+
}) => Promise<Scope & {
|
|
279
|
+
backup: ScopeBackup | null;
|
|
280
|
+
}>;
|
|
281
|
+
rebindScopeVertical: (t: TenantId, s: ScopeId, vertical: string, opts?: {
|
|
282
|
+
ackMigrations?: boolean;
|
|
283
|
+
}) => Promise<RebindScopeResult>;
|
|
284
|
+
/** The copies held for a scope, newest first — readable after the reap (the tombstone survives). */
|
|
285
|
+
listScopeBackups: (t: TenantId, s: ScopeId) => Promise<ScopeBackup[]>;
|
|
286
|
+
/** Take a copy without reaping — a pre-migration checkpoint, or an export to keep. */
|
|
287
|
+
backupScope: (t: TenantId, s: ScopeId) => Promise<ScopeBackup>;
|
|
288
|
+
listDirectoryBackups: () => Promise<DirectoryBackup[]>;
|
|
289
|
+
backupDirectory: () => Promise<DirectoryBackup>;
|
|
290
|
+
deleteScope: (t: TenantId, s: ScopeId) => Promise<{
|
|
291
|
+
deleted: ScopeId;
|
|
292
|
+
}>;
|
|
293
|
+
listRoles: (filter?: {
|
|
294
|
+
tenantId?: TenantId;
|
|
295
|
+
source?: string;
|
|
296
|
+
} & PageQuery) => Promise<Page<TenantRole>>;
|
|
297
|
+
listHostnames: (filter?: {
|
|
298
|
+
tenantId?: TenantId;
|
|
299
|
+
scopeId?: ScopeId;
|
|
300
|
+
} & PageQuery) => Promise<Page<HostnameBinding>>;
|
|
301
|
+
bindHostname: (input: BindHostnameInput) => Promise<HostnameBinding>;
|
|
302
|
+
setHostnameStatus: (hostname: string, status: HostnameStatus, note?: string) => Promise<HostnameBinding>;
|
|
303
|
+
unbindHostname: (hostname: string) => Promise<void>;
|
|
304
|
+
/**
|
|
305
|
+
* Create one instance of a vertical (K-31). The control plane calls the
|
|
306
|
+
* vertical, because only it can create a usable scope DO.
|
|
307
|
+
*
|
|
308
|
+
* Call this BEFORE `provisionScope`: the directory row should only exist once
|
|
309
|
+
* the vertical is ready, so a failure leaves an invisible orphan rather than a
|
|
310
|
+
* directory row promising a scope that is not there.
|
|
311
|
+
*/
|
|
312
|
+
provisionInstance: (verticalSlug: string, input: {
|
|
313
|
+
tenantId: TenantId;
|
|
314
|
+
scopeId: ScopeId;
|
|
315
|
+
owner: string;
|
|
316
|
+
slug: string;
|
|
317
|
+
name: string;
|
|
318
|
+
}) => Promise<{
|
|
319
|
+
tenantId: TenantId;
|
|
320
|
+
scopeId: ScopeId;
|
|
321
|
+
owner: string;
|
|
322
|
+
}>;
|
|
323
|
+
adminLog: (q?: AuditLogQuery) => Promise<AdminLogPage>;
|
|
324
|
+
listOpsFailures: (q?: OpsFailuresQuery) => Promise<Page<OpsFailureEntry>>;
|
|
325
|
+
listSweepRuns: (q?: SweepRunsQuery) => Promise<Page<SweepRunEntry>>;
|
|
326
|
+
listSystemSwitches: (q?: SystemSwitchesQuery) => Promise<Page<SystemSwitchRecord>>;
|
|
327
|
+
listConnectionHealth: (q?: ConnectionHealthQuery) => Promise<ConnectionHealthPage>;
|
|
328
|
+
connectorCalls: (q: {
|
|
329
|
+
hours: number;
|
|
330
|
+
provider?: string;
|
|
331
|
+
}) => Promise<{
|
|
332
|
+
hours: number;
|
|
333
|
+
buckets: ConnectorCallsBucket[];
|
|
334
|
+
}>;
|
|
335
|
+
listIssues: (q?: IssuesQuery) => Promise<{
|
|
336
|
+
entries: IssueEntry[];
|
|
337
|
+
}>;
|
|
338
|
+
setIssueStatus: (fingerprint: string, status: IssueStatusInput) => Promise<IssueEntry>;
|
|
339
|
+
listVerticals: (page?: PageQuery) => Promise<Page<Vertical>>;
|
|
340
|
+
registerVertical: (input: {
|
|
341
|
+
slug: string;
|
|
342
|
+
name: string;
|
|
343
|
+
source: VerticalSource;
|
|
344
|
+
}) => Promise<Vertical>;
|
|
345
|
+
listVersions: (slug: string, page?: PageQuery) => Promise<Page<VerticalVersion>>;
|
|
346
|
+
admitVersion: (slug: string, id: string) => Promise<VerticalVersion>;
|
|
347
|
+
rejectVersion: (slug: string, id: string, note: string) => Promise<VerticalVersion>;
|
|
348
|
+
listChannels: (slug: string, page?: PageQuery) => Promise<Page<VerticalChannel>>;
|
|
349
|
+
setVerticalListed: (slug: string, listed: boolean) => Promise<{
|
|
350
|
+
slug: string;
|
|
351
|
+
listed: boolean;
|
|
352
|
+
}>;
|
|
353
|
+
setInstallsBlocked: (slug: string, blocked: boolean) => Promise<{
|
|
354
|
+
slug: string;
|
|
355
|
+
installsBlocked: boolean;
|
|
356
|
+
}>;
|
|
357
|
+
setTenantProvisioner: (slug: string, granted: boolean) => Promise<{
|
|
358
|
+
slug: string;
|
|
359
|
+
tenantProvisioner: boolean;
|
|
360
|
+
}>;
|
|
361
|
+
setEmailSender: (slug: string, granted: boolean) => Promise<{
|
|
362
|
+
slug: string;
|
|
363
|
+
emailSender: boolean;
|
|
364
|
+
}>;
|
|
365
|
+
deleteVertical: (slug: string) => Promise<{
|
|
366
|
+
slug: string;
|
|
367
|
+
deleted: boolean;
|
|
368
|
+
}>;
|
|
369
|
+
promoteVersion: (slug: string, channel: ChannelName, versionId: string, acknowledge?: PromotionAcknowledgement) => Promise<VerticalChannel>;
|
|
370
|
+
promotionImpact: (slug: string, channel: ChannelName, versionId: string) => Promise<{
|
|
371
|
+
affected: ExportBreak[];
|
|
372
|
+
otherTenants?: number;
|
|
373
|
+
}>;
|
|
374
|
+
versionRegistry: (slug: string, versionId: string) => Promise<{
|
|
375
|
+
registry: PermissionRegistry | null;
|
|
376
|
+
}>;
|
|
377
|
+
versionMigrations: (slug: string, versionId: string, base?: string) => Promise<{
|
|
378
|
+
migrations: MigrationDiff | null;
|
|
379
|
+
}>;
|
|
380
|
+
bindScopeVersion: (tenantId: TenantId, scopeId: ScopeId, versionId: string) => Promise<Scope>;
|
|
381
|
+
listMembers: () => Promise<MembersReading>;
|
|
382
|
+
grantStaffAccess: (email: string, name?: string) => Promise<MembersReading>;
|
|
383
|
+
revokeStaffAccess: (email: string) => Promise<MembersReading>;
|
|
384
|
+
serviceMetrics: (hours: number) => Promise<ServiceMetricsRow[]>;
|
|
385
|
+
recentLogs: (q?: {
|
|
386
|
+
service?: string;
|
|
387
|
+
level?: string;
|
|
388
|
+
hours?: number;
|
|
389
|
+
limit?: number;
|
|
390
|
+
}) => Promise<RecentLogEvent[]>;
|
|
391
|
+
/** Observed-vs-declared outbound egress for a vertical's deployed versions (#859). */
|
|
392
|
+
verticalEgress: (slug: string, q?: {
|
|
393
|
+
hours?: number;
|
|
394
|
+
limit?: number;
|
|
395
|
+
}) => Promise<EgressReport>;
|
|
396
|
+
platformRequestBacklog: () => Promise<PlatformRequestBacklog>;
|
|
397
|
+
}
|
|
398
|
+
//# sourceMappingURL=staff-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staff-client.d.ts","sourceRoot":"","sources":["../src/staff-client.ts"],"names":[],"mappings":"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"}
|