@ninedeploy/schemas 0.2.7 → 0.3.4

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 (49) hide show
  1. package/dist/auth.d.ts +19 -14
  2. package/dist/auth.d.ts.map +1 -1
  3. package/dist/auth.js +18 -4
  4. package/dist/auth.js.map +1 -1
  5. package/dist/common.d.ts +18 -0
  6. package/dist/common.d.ts.map +1 -1
  7. package/dist/common.js +47 -0
  8. package/dist/common.js.map +1 -1
  9. package/dist/index.d.ts +7 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +5 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/insights.d.ts +110 -0
  14. package/dist/insights.d.ts.map +1 -0
  15. package/dist/insights.js +64 -0
  16. package/dist/insights.js.map +1 -0
  17. package/dist/labels.d.ts +108 -0
  18. package/dist/labels.d.ts.map +1 -0
  19. package/dist/labels.js +70 -0
  20. package/dist/labels.js.map +1 -0
  21. package/dist/management.d.ts +36 -7
  22. package/dist/management.d.ts.map +1 -1
  23. package/dist/management.js +58 -9
  24. package/dist/management.js.map +1 -1
  25. package/dist/ninedeployManifest.d.ts +292 -0
  26. package/dist/ninedeployManifest.d.ts.map +1 -0
  27. package/dist/ninedeployManifest.js +284 -0
  28. package/dist/ninedeployManifest.js.map +1 -0
  29. package/dist/project.d.ts +4 -2
  30. package/dist/project.d.ts.map +1 -1
  31. package/dist/project.js +2 -2
  32. package/dist/project.js.map +1 -1
  33. package/dist/runtimeVersions.d.ts +102 -0
  34. package/dist/runtimeVersions.d.ts.map +1 -0
  35. package/dist/runtimeVersions.js +153 -0
  36. package/dist/runtimeVersions.js.map +1 -0
  37. package/dist/secretScan.d.ts +52 -0
  38. package/dist/secretScan.d.ts.map +1 -0
  39. package/dist/secretScan.js +125 -0
  40. package/dist/secretScan.js.map +1 -0
  41. package/dist/service.d.ts +121 -4
  42. package/dist/service.d.ts.map +1 -1
  43. package/dist/service.js +151 -11
  44. package/dist/service.js.map +1 -1
  45. package/dist/workspaces.d.ts +49 -0
  46. package/dist/workspaces.d.ts.map +1 -1
  47. package/dist/workspaces.js +9 -0
  48. package/dist/workspaces.js.map +1 -1
  49. package/package.json +1 -1
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Secret-pattern scanner for `.ninedeploy` manifests.
3
+ *
4
+ * The manifest is committed to the repo, so it must NEVER carry real
5
+ * credentials, tokens or connection strings. This module is a defensive net:
6
+ * patterns are matched against the raw text, and any hit fails the load.
7
+ *
8
+ * The list is intentionally explicit (named patterns) rather than a generic
9
+ * entropy heuristic — false positives are user-hostile (legitimate values
10
+ * that look credential-like should pass). Every regex is also bounded to
11
+ * avoid runaway matching on long inputs.
12
+ *
13
+ * Lives in `@ninedeploy/schemas` (not in `@ninedeploy/server`) because the
14
+ * CLI also needs to run the scan in `ninedeploy manifest validate`. Anything
15
+ * that loads a manifest — server, CLI, future MCP tool — should reuse this.
16
+ */
17
+ /** A single rule: a human-readable name plus a regex that MUST match the
18
+ * *beginning* of a credential — anchoring left keeps the regex from firing
19
+ * on substrings inside longer strings. */
20
+ export interface SecretPattern {
21
+ readonly id: string;
22
+ readonly description: string;
23
+ readonly regex: RegExp;
24
+ }
25
+ export declare const SECRET_PATTERNS: ReadonlyArray<SecretPattern>;
26
+ /** A single secret-pattern hit in scanned text. */
27
+ export interface SecretHit {
28
+ patternId: string;
29
+ description: string;
30
+ /** Index in the original text where the match starts. */
31
+ start: number;
32
+ /** Index in the original text where the match ends. */
33
+ end: number;
34
+ /** A redacted preview of the matched text (first 4 chars + … + last 2). */
35
+ redacted: string;
36
+ }
37
+ /**
38
+ * Run every secret pattern across `text` and return every hit.
39
+ *
40
+ * The scan is non-overlapping and bounded — each regex is `\b`-anchored or
41
+ * scheme-anchored, so a single credential can never span more than one match.
42
+ */
43
+ export declare function scanForSecrets(text: string): SecretHit[];
44
+ /** Returns true if the text contains anything that looks like a secret. */
45
+ export declare function hasSecret(text: string): boolean;
46
+ /**
47
+ * Replace the middle of a string with `…` for safe logging. Keeps the first
48
+ * 4 and last 2 characters when the input is long enough; otherwise just
49
+ * emits `<redacted:N>` so the length is still visible.
50
+ */
51
+ export declare function redact(value: string): string;
52
+ //# sourceMappingURL=secretScan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretScan.d.ts","sourceRoot":"","sources":["../src/secretScan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;2CAE2C;AAC3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,aAAa,CAkExD,CAAC;AAEF,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAmBxD;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5C"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Secret-pattern scanner for `.ninedeploy` manifests.
3
+ *
4
+ * The manifest is committed to the repo, so it must NEVER carry real
5
+ * credentials, tokens or connection strings. This module is a defensive net:
6
+ * patterns are matched against the raw text, and any hit fails the load.
7
+ *
8
+ * The list is intentionally explicit (named patterns) rather than a generic
9
+ * entropy heuristic — false positives are user-hostile (legitimate values
10
+ * that look credential-like should pass). Every regex is also bounded to
11
+ * avoid runaway matching on long inputs.
12
+ *
13
+ * Lives in `@ninedeploy/schemas` (not in `@ninedeploy/server`) because the
14
+ * CLI also needs to run the scan in `ninedeploy manifest validate`. Anything
15
+ * that loads a manifest — server, CLI, future MCP tool — should reuse this.
16
+ */
17
+ export const SECRET_PATTERNS = [
18
+ {
19
+ id: 'aws-access-key',
20
+ description: 'AWS access key id (AKIA…)',
21
+ regex: /AKIA[0-9A-Z]{16}\b/,
22
+ },
23
+ {
24
+ id: 'github-pat-classic',
25
+ description: 'GitHub personal access token (ghp_…)',
26
+ regex: /\bghp_[A-Za-z0-9]{36}\b/,
27
+ },
28
+ {
29
+ id: 'github-pat-fine-grained',
30
+ description: 'GitHub fine-grained PAT (github_pat_…)',
31
+ regex: /\bgithub_pat_[A-Za-z0-9_]{82}\b/,
32
+ },
33
+ {
34
+ id: 'gitlab-pat',
35
+ description: 'GitLab personal access token (glpat-…)',
36
+ regex: /\bglpat-[A-Za-z0-9_-]{20,}\b/,
37
+ },
38
+ {
39
+ id: 'slack-token',
40
+ description: 'Slack token (xox[baprs]-…)',
41
+ regex: /\bxox[baprs]-[A-Za-z0-9-]{10,}\b/,
42
+ },
43
+ {
44
+ id: 'stripe-live-secret',
45
+ description: 'Stripe live secret key (sk_live_…)',
46
+ regex: /\bsk_live_[A-Za-z0-9]{24,}\b/,
47
+ },
48
+ {
49
+ id: 'stripe-live-restricted',
50
+ description: 'Stripe live restricted key (rk_live_…)',
51
+ regex: /\brk_live_[A-Za-z0-9]{24,}\b/,
52
+ },
53
+ {
54
+ id: 'openai-secret',
55
+ description: 'OpenAI API key (sk-…)',
56
+ regex: /\bsk-[A-Za-z0-9]{48,}\b/,
57
+ },
58
+ {
59
+ id: 'anthropic-key',
60
+ description: 'Anthropic API key (sk-ant-…)',
61
+ regex: /\bsk-ant-[A-Za-z0-9_-]{40,}\b/,
62
+ },
63
+ {
64
+ id: 'discord-webhook',
65
+ description: 'Discord webhook URL (discord…/api/webhooks/…)',
66
+ regex: /https?:\/\/(?:[A-Za-z0-9-]+\.)?discord(?:app)?\.com\/api\/webhooks\/\d+\/[A-Za-z0-9_-]+/,
67
+ },
68
+ {
69
+ id: 'database-url-credentials',
70
+ description: 'Database URL with embedded credentials (scheme://user:pass@…)',
71
+ regex: /\b(?:postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|amqps?|mssql):\/\/[^\s:@'"]+:[^\s@'"]{3,}@/i,
72
+ },
73
+ {
74
+ id: 'private-key',
75
+ description: 'PEM private key block',
76
+ regex: /-----BEGIN [A-Z ]+PRIVATE KEY-----/,
77
+ },
78
+ {
79
+ id: 'jwt-bearer',
80
+ description: 'Bearer JWT in a literal value',
81
+ regex: /\bBearer\s+eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/,
82
+ },
83
+ ];
84
+ /**
85
+ * Run every secret pattern across `text` and return every hit.
86
+ *
87
+ * The scan is non-overlapping and bounded — each regex is `\b`-anchored or
88
+ * scheme-anchored, so a single credential can never span more than one match.
89
+ */
90
+ export function scanForSecrets(text) {
91
+ const hits = [];
92
+ for (const pattern of SECRET_PATTERNS) {
93
+ // Reset stateful `g` regexes (defensive — none of ours use `g` today).
94
+ pattern.regex.lastIndex = 0;
95
+ const match = pattern.regex.exec(text);
96
+ if (!match || match.index === undefined)
97
+ continue;
98
+ const start = match.index;
99
+ const end = start + match[0].length;
100
+ hits.push({
101
+ patternId: pattern.id,
102
+ description: pattern.description,
103
+ start,
104
+ end,
105
+ redacted: redact(match[0]),
106
+ });
107
+ }
108
+ // Sort by start position so the redacted-log line reads in document order.
109
+ return hits.sort((a, b) => a.start - b.start);
110
+ }
111
+ /** Returns true if the text contains anything that looks like a secret. */
112
+ export function hasSecret(text) {
113
+ return scanForSecrets(text).length > 0;
114
+ }
115
+ /**
116
+ * Replace the middle of a string with `…` for safe logging. Keeps the first
117
+ * 4 and last 2 characters when the input is long enough; otherwise just
118
+ * emits `<redacted:N>` so the length is still visible.
119
+ */
120
+ export function redact(value) {
121
+ if (value.length <= 8)
122
+ return `<redacted:${value.length}>`;
123
+ return `${value.slice(0, 4)}…${value.slice(-2)} (len=${value.length})`;
124
+ }
125
+ //# sourceMappingURL=secretScan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretScan.js","sourceRoot":"","sources":["../src/secretScan.ts"],"names":[],"mappings":"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"}
package/dist/service.d.ts CHANGED
@@ -10,9 +10,13 @@ export declare const buildPack: z.ZodEnum<{
10
10
  nixpacks: "nixpacks";
11
11
  }>;
12
12
  export declare const createService: z.ZodObject<{
13
- projectId: z.ZodOptional<z.ZodNumber>;
13
+ templateId: z.ZodOptional<z.ZodString>;
14
+ tagProjectIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
15
+ tagWorkspaceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
16
+ tagLabelIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
14
17
  name: z.ZodString;
15
18
  slug: z.ZodOptional<z.ZodString>;
19
+ reuseExisting: z.ZodOptional<z.ZodBoolean>;
16
20
  type: z.ZodDefault<z.ZodEnum<{
17
21
  compose: "compose";
18
22
  docker: "docker";
@@ -58,7 +62,9 @@ export type CreateService = z.infer<typeof createService>;
58
62
  * still applies `.default()` values for absent keys, which would silently
59
63
  * rewrite `type` back to 'docker' and `branch` to 'main' on every PATCH. */
60
64
  export declare const updateService: z.ZodObject<{
61
- projectId: z.ZodOptional<z.ZodNumber>;
65
+ tagProjectIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
66
+ tagWorkspaceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
67
+ tagLabelIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
62
68
  name: z.ZodOptional<z.ZodString>;
63
69
  slug: z.ZodOptional<z.ZodString>;
64
70
  type: z.ZodOptional<z.ZodEnum<{
@@ -68,7 +74,7 @@ export declare const updateService: z.ZodObject<{
68
74
  }>>;
69
75
  repoUrl: z.ZodOptional<z.ZodURL>;
70
76
  branch: z.ZodOptional<z.ZodString>;
71
- sourceId: z.ZodOptional<z.ZodNumber>;
77
+ sourceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
72
78
  serverId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
73
79
  image: z.ZodOptional<z.ZodString>;
74
80
  volumeMount: z.ZodOptional<z.ZodString>;
@@ -106,7 +112,24 @@ export type CreateServiceInput = z.input<typeof createService>;
106
112
  export type UpdateServiceInput = z.input<typeof updateService>;
107
113
  export declare const service: z.ZodObject<{
108
114
  id: z.ZodNumber;
109
- projectId: z.ZodNullable<z.ZodNumber>;
115
+ projectIds: z.ZodArray<z.ZodNumber>;
116
+ workspaceIds: z.ZodArray<z.ZodNumber>;
117
+ labelIds: z.ZodArray<z.ZodNumber>;
118
+ projects: z.ZodOptional<z.ZodArray<z.ZodObject<{
119
+ id: z.ZodNumber;
120
+ name: z.ZodString;
121
+ slug: z.ZodString;
122
+ }, z.core.$strip>>>;
123
+ workspaces: z.ZodOptional<z.ZodArray<z.ZodObject<{
124
+ id: z.ZodNumber;
125
+ name: z.ZodString;
126
+ slug: z.ZodString;
127
+ }, z.core.$strip>>>;
128
+ labels: z.ZodOptional<z.ZodArray<z.ZodObject<{
129
+ id: z.ZodNumber;
130
+ name: z.ZodString;
131
+ color: z.ZodString;
132
+ }, z.core.$strip>>>;
110
133
  serverId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
111
134
  name: z.ZodString;
112
135
  slug: z.ZodString;
@@ -126,6 +149,7 @@ export declare const service: z.ZodObject<{
126
149
  repoUrl: z.ZodNullable<z.ZodString>;
127
150
  branch: z.ZodString;
128
151
  sourceId: z.ZodNullable<z.ZodNumber>;
152
+ sourceName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
129
153
  image: z.ZodNullable<z.ZodString>;
130
154
  volumeMount: z.ZodNullable<z.ZodString>;
131
155
  composeService: z.ZodNullable<z.ZodString>;
@@ -186,8 +210,10 @@ export declare const source: z.ZodObject<{
186
210
  type: z.ZodString;
187
211
  hasToken: z.ZodBoolean;
188
212
  hasDeployKey: z.ZodBoolean;
213
+ registryUsername: z.ZodOptional<z.ZodNullable<z.ZodString>>;
189
214
  defaultBranch: z.ZodNullable<z.ZodString>;
190
215
  createdAt: z.ZodString;
216
+ updatedAt: z.ZodOptional<z.ZodString>;
191
217
  }, z.core.$strip>;
192
218
  export type Source = z.infer<typeof source>;
193
219
  export declare const triggerDeploy: z.ZodObject<{
@@ -203,6 +229,7 @@ export declare const deployment: z.ZodObject<{
203
229
  failed: "failed";
204
230
  queued: "queued";
205
231
  running: "running";
232
+ superseded: "superseded";
206
233
  }>;
207
234
  commitSha: z.ZodNullable<z.ZodString>;
208
235
  message: z.ZodNullable<z.ZodString>;
@@ -263,6 +290,7 @@ export declare const webhook: z.ZodObject<{
263
290
  branch: z.ZodString;
264
291
  active: z.ZodBoolean;
265
292
  watchPaths: z.ZodString;
293
+ sourceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
266
294
  url: z.ZodString;
267
295
  createdAt: z.ZodString;
268
296
  }, z.core.$strip>;
@@ -273,6 +301,7 @@ export declare const createdWebhook: z.ZodObject<{
273
301
  branch: z.ZodString;
274
302
  active: z.ZodBoolean;
275
303
  watchPaths: z.ZodString;
304
+ sourceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
276
305
  url: z.ZodString;
277
306
  createdAt: z.ZodString;
278
307
  secret: z.ZodString;
@@ -293,6 +322,7 @@ export declare const createDatabase: z.ZodObject<{
293
322
  }>;
294
323
  version: z.ZodOptional<z.ZodString>;
295
324
  projectId: z.ZodOptional<z.ZodNumber>;
325
+ reuseExisting: z.ZodOptional<z.ZodBoolean>;
296
326
  existingVolume: z.ZodOptional<z.ZodString>;
297
327
  extensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
298
328
  webGuiEnabled: z.ZodOptional<z.ZodBoolean>;
@@ -335,6 +365,7 @@ export type ManagedDatabase = z.infer<typeof managedDatabase>;
335
365
  export declare const createAttachment: z.ZodObject<{
336
366
  databaseId: z.ZodNumber;
337
367
  envAlias: z.ZodOptional<z.ZodString>;
368
+ reuseExisting: z.ZodOptional<z.ZodBoolean>;
338
369
  }, z.core.$strip>;
339
370
  export type CreateAttachmentInput = z.input<typeof createAttachment>;
340
371
  export declare const attachment: z.ZodObject<{
@@ -352,6 +383,7 @@ export declare const upsertEnvVar: z.ZodObject<{
352
383
  key: z.ZodString;
353
384
  value: z.ZodString;
354
385
  isSecret: z.ZodOptional<z.ZodBoolean>;
386
+ overwriteExisting: z.ZodOptional<z.ZodBoolean>;
355
387
  }, z.core.$strip>;
356
388
  export type UpsertEnvVarInput = z.input<typeof upsertEnvVar>;
357
389
  export declare const envVar: z.ZodObject<{
@@ -361,6 +393,36 @@ export declare const envVar: z.ZodObject<{
361
393
  isSecret: z.ZodBoolean;
362
394
  }, z.core.$strip>;
363
395
  export type EnvVar = z.infer<typeof envVar>;
396
+ /** Create a new attachment. Exactly one of `volumeName` or `create.label`
397
+ * must be present — the former attaches an existing managed volume, the
398
+ * latter provisions a new one (system-generated name) and immediately
399
+ * attaches it. */
400
+ export declare const createServiceVolumeAttachment: z.ZodObject<{
401
+ volumeName: z.ZodOptional<z.ZodString>;
402
+ create: z.ZodOptional<z.ZodObject<{
403
+ label: z.ZodString;
404
+ }, z.core.$strip>>;
405
+ containerPath: z.ZodString;
406
+ readOnly: z.ZodOptional<z.ZodBoolean>;
407
+ }, z.core.$strip>;
408
+ export type CreateServiceVolumeAttachmentInput = z.input<typeof createServiceVolumeAttachment>;
409
+ /** PATCH shape — path and readOnly are optional, but at least one must change. */
410
+ export declare const updateServiceVolumeAttachment: z.ZodObject<{
411
+ containerPath: z.ZodOptional<z.ZodString>;
412
+ readOnly: z.ZodOptional<z.ZodBoolean>;
413
+ }, z.core.$strip>;
414
+ export type UpdateServiceVolumeAttachmentInput = z.input<typeof updateServiceVolumeAttachment>;
415
+ /** API representation of a service's volume attachment. */
416
+ export declare const serviceVolumeAttachment: z.ZodObject<{
417
+ id: z.ZodNumber;
418
+ serviceId: z.ZodNumber;
419
+ volumeName: z.ZodString;
420
+ containerPath: z.ZodString;
421
+ readOnly: z.ZodBoolean;
422
+ createdAt: z.ZodString;
423
+ updatedAt: z.ZodString;
424
+ }, z.core.$strip>;
425
+ export type ServiceVolumeAttachment = z.infer<typeof serviceVolumeAttachment>;
364
426
  export declare const setLimits: z.ZodObject<{
365
427
  cpuShares: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
366
428
  memLimitMb: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -476,20 +538,40 @@ export type TopologyGraph = z.infer<typeof topologyGraph>;
476
538
  export declare const backup: z.ZodObject<{
477
539
  id: z.ZodNumber;
478
540
  databaseId: z.ZodNullable<z.ZodNumber>;
541
+ volumeName: z.ZodNullable<z.ZodString>;
542
+ scope: z.ZodEnum<{
543
+ db: "db";
544
+ volumes: "volumes";
545
+ }>;
479
546
  status: z.ZodString;
480
547
  sizeBytes: z.ZodNumber;
548
+ label: z.ZodNullable<z.ZodString>;
549
+ hasRemoteCopy: z.ZodOptional<z.ZodBoolean>;
481
550
  createdAt: z.ZodString;
482
551
  }, z.core.$strip>;
483
552
  export type Backup = z.infer<typeof backup>;
484
553
  export declare const backupWithDb: z.ZodObject<{
485
554
  id: z.ZodNumber;
486
555
  databaseId: z.ZodNullable<z.ZodNumber>;
556
+ volumeName: z.ZodNullable<z.ZodString>;
557
+ scope: z.ZodEnum<{
558
+ db: "db";
559
+ volumes: "volumes";
560
+ }>;
487
561
  status: z.ZodString;
488
562
  sizeBytes: z.ZodNumber;
563
+ label: z.ZodNullable<z.ZodString>;
564
+ hasRemoteCopy: z.ZodOptional<z.ZodBoolean>;
489
565
  createdAt: z.ZodString;
490
566
  databaseName: z.ZodNullable<z.ZodString>;
491
567
  }, z.core.$strip>;
492
568
  export type BackupWithDb = z.infer<typeof backupWithDb>;
569
+ /** Create a new volume backup. The `volumeName` is the route param; the
570
+ * body only carries the `label` for human-friendly file naming. */
571
+ export declare const createVolumeBackup: z.ZodObject<{
572
+ label: z.ZodOptional<z.ZodString>;
573
+ }, z.core.$strip>;
574
+ export type CreateVolumeBackupInput = z.input<typeof createVolumeBackup>;
493
575
  export declare const templateSummary: z.ZodObject<{
494
576
  id: z.ZodString;
495
577
  name: z.ZodString;
@@ -497,6 +579,8 @@ export declare const templateSummary: z.ZodObject<{
497
579
  category: z.ZodString;
498
580
  emoji: z.ZodString;
499
581
  featured: z.ZodOptional<z.ZodBoolean>;
582
+ runtimeVerified: z.ZodOptional<z.ZodBoolean>;
583
+ verifiedAt: z.ZodOptional<z.ZodISODate>;
500
584
  }, z.core.$strip>;
501
585
  export type TemplateSummary = z.infer<typeof templateSummary>;
502
586
  export declare const template: z.ZodObject<{
@@ -517,6 +601,8 @@ export declare const template: z.ZodObject<{
517
601
  website: z.ZodOptional<z.ZodString>;
518
602
  docs: z.ZodOptional<z.ZodString>;
519
603
  featured: z.ZodOptional<z.ZodBoolean>;
604
+ runtimeVerified: z.ZodOptional<z.ZodBoolean>;
605
+ verifiedAt: z.ZodOptional<z.ZodISODate>;
520
606
  requires: z.ZodOptional<z.ZodString>;
521
607
  dbEngine: z.ZodOptional<z.ZodEnum<{
522
608
  clickhouse: "clickhouse";
@@ -529,10 +615,41 @@ export declare const template: z.ZodObject<{
529
615
  redis: "redis";
530
616
  valkey: "valkey";
531
617
  }>>;
618
+ databaseEnv: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
619
+ database: "database";
620
+ host: "host";
621
+ hostPort: "hostPort";
622
+ password: "password";
623
+ port: "port";
624
+ url: "url";
625
+ username: "username";
626
+ }>>>;
532
627
  cmd: z.ZodOptional<z.ZodArray<z.ZodString>>;
533
628
  dockerSocket: z.ZodOptional<z.ZodBoolean>;
534
629
  }, z.core.$strip>;
535
630
  export type Template = z.infer<typeof template>;
631
+ /**
632
+ * One canonical Hub installation request. Image, internal port, volume,
633
+ * command, Docker socket and database mapping are intentionally absent: they
634
+ * are privileged registry-owned fields resolved by the server.
635
+ */
636
+ export declare const deployTemplate: z.ZodObject<{
637
+ name: z.ZodOptional<z.ZodString>;
638
+ projectId: z.ZodOptional<z.ZodNumber>;
639
+ serverId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
640
+ publishedPort: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
641
+ healthPath: z.ZodOptional<z.ZodString>;
642
+ cpuShares: z.ZodOptional<z.ZodNumber>;
643
+ memLimitMb: z.ZodOptional<z.ZodNumber>;
644
+ env: z.ZodOptional<z.ZodArray<z.ZodObject<{
645
+ key: z.ZodString;
646
+ value: z.ZodString;
647
+ isSecret: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
648
+ }, z.core.$strip>>>;
649
+ reuseExisting: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
650
+ }, z.core.$strip>;
651
+ export type DeployTemplateInput = z.input<typeof deployTemplate>;
652
+ export type DeployTemplate = z.infer<typeof deployTemplate>;
536
653
  export declare const domainEntry: z.ZodObject<{
537
654
  id: z.ZodNumber;
538
655
  hostname: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}