@cat-factory/contracts 0.142.0 → 0.143.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/public-api-keys.d.ts +29 -1
- package/dist/public-api-keys.d.ts.map +1 -1
- package/dist/public-api-keys.js +24 -1
- package/dist/public-api-keys.js.map +1 -1
- package/dist/routes/public-api.d.ts +38 -0
- package/dist/routes/public-api.d.ts.map +1 -1
- package/dist/routes/public-api.js +7 -0
- package/dist/routes/public-api.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
|
+
/**
|
|
3
|
+
* The permission a key carries on the `/api/v1` surface. An ordered ladder — each level
|
|
4
|
+
* INCLUDES the ones below it (`admin` ⊃ `write` ⊃ `read`), so an endpoint gates on a MINIMUM:
|
|
5
|
+
*
|
|
6
|
+
* - `read` — read-only reads/streams (list services/tasks/pipelines, poll a run, SSE).
|
|
7
|
+
* - `write` — everything `read` can do, PLUS non-destructive mutations (create/start/stop/
|
|
8
|
+
* retry/edit a task, start an initiative run).
|
|
9
|
+
* - `admin` — everything `write` can do, PLUS destructive / merge-adjacent operations
|
|
10
|
+
* (delete a task; future: resolve a merge-review notification, which performs a real merge).
|
|
11
|
+
*
|
|
12
|
+
* The canonical rank order lives beside this schema (`PUBLIC_API_SCOPES`) so both the wire
|
|
13
|
+
* validation and the server-side `scope ≥ required` check read from one source of truth.
|
|
14
|
+
*/
|
|
15
|
+
export declare const PUBLIC_API_SCOPES: readonly ['read', 'write', 'admin'];
|
|
16
|
+
export declare const publicApiScopeSchema: v.PicklistSchema<readonly ["read", "write", "admin"], undefined>;
|
|
17
|
+
export type PublicApiScope = v.InferOutput<typeof publicApiScopeSchema>;
|
|
2
18
|
/** One public-API key as exposed to clients — metadata only, never the secret. */
|
|
3
19
|
export declare const publicApiKeySchema: v.ObjectSchema<{
|
|
4
20
|
/** `pak_*` — also the non-secret lookup id embedded in the raw key. */
|
|
@@ -6,6 +22,8 @@ export declare const publicApiKeySchema: v.ObjectSchema<{
|
|
|
6
22
|
readonly accountId: v.StringSchema<undefined>;
|
|
7
23
|
readonly workspaceId: v.StringSchema<undefined>;
|
|
8
24
|
readonly label: v.StringSchema<undefined>;
|
|
25
|
+
/** What the key is allowed to do on `/api/v1` (read ⊂ write ⊂ admin). */
|
|
26
|
+
readonly scope: v.PicklistSchema<readonly ["read", "write", "admin"], undefined>;
|
|
9
27
|
readonly createdAt: v.NumberSchema<undefined>;
|
|
10
28
|
readonly lastUsedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
11
29
|
/** Set when the key was revoked (tombstone); a revoked key never authenticates. */
|
|
@@ -19,6 +37,8 @@ export declare const publicApiKeyListResultSchema: v.ObjectSchema<{
|
|
|
19
37
|
readonly accountId: v.StringSchema<undefined>;
|
|
20
38
|
readonly workspaceId: v.StringSchema<undefined>;
|
|
21
39
|
readonly label: v.StringSchema<undefined>;
|
|
40
|
+
/** What the key is allowed to do on `/api/v1` (read ⊂ write ⊂ admin). */
|
|
41
|
+
readonly scope: v.PicklistSchema<readonly ["read", "write", "admin"], undefined>;
|
|
22
42
|
readonly createdAt: v.NumberSchema<undefined>;
|
|
23
43
|
readonly lastUsedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
24
44
|
/** Set when the key was revoked (tombstone); a revoked key never authenticates. */
|
|
@@ -26,9 +46,15 @@ export declare const publicApiKeyListResultSchema: v.ObjectSchema<{
|
|
|
26
46
|
}, undefined>, undefined>;
|
|
27
47
|
}, undefined>;
|
|
28
48
|
export type PublicApiKeyListResult = v.InferOutput<typeof publicApiKeyListResultSchema>;
|
|
29
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Mint a new key. A label plus an optional `scope` (the account/workspace scope comes from the
|
|
51
|
+
* mounting route). `scope` defaults to `write` — the safe middle of the ladder: a fresh key can
|
|
52
|
+
* create/start/manage tasks but NOT delete or perform a merge-adjacent action until it is minted
|
|
53
|
+
* `admin` explicitly. Pass `read` for a monitor-only integration.
|
|
54
|
+
*/
|
|
30
55
|
export declare const createPublicApiKeySchema: v.ObjectSchema<{
|
|
31
56
|
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
57
|
+
readonly scope: v.OptionalSchema<v.PicklistSchema<readonly ["read", "write", "admin"], undefined>, "write">;
|
|
32
58
|
}, undefined>;
|
|
33
59
|
export type CreatePublicApiKeyInput = v.InferOutput<typeof createPublicApiKeySchema>;
|
|
34
60
|
/**
|
|
@@ -42,6 +68,8 @@ export declare const createdPublicApiKeySchema: v.ObjectSchema<{
|
|
|
42
68
|
readonly accountId: v.StringSchema<undefined>;
|
|
43
69
|
readonly workspaceId: v.StringSchema<undefined>;
|
|
44
70
|
readonly label: v.StringSchema<undefined>;
|
|
71
|
+
/** What the key is allowed to do on `/api/v1` (read ⊂ write ⊂ admin). */
|
|
72
|
+
readonly scope: v.PicklistSchema<readonly ["read", "write", "admin"], undefined>;
|
|
45
73
|
readonly createdAt: v.NumberSchema<undefined>;
|
|
46
74
|
readonly lastUsedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
47
75
|
/** Set when the key was revoked (tombstone); a revoked key never authenticates. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api-keys.d.ts","sourceRoot":"","sources":["../src/public-api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiB5B,kFAAkF;AAClF,eAAO,MAAM,kBAAkB;IAC7B,uEAAuE
|
|
1
|
+
{"version":3,"file":"public-api-keys.d.ts","sourceRoot":"","sources":["../src/public-api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiB5B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,YAAI,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU,CAAA;AACpE,eAAO,MAAM,oBAAoB,kEAAgC,CAAA;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,kFAAkF;AAClF,eAAO,MAAM,kBAAkB;IAC7B,uEAAuE;;;;;IAKvE,yEAAyE;;;;IAIzE,mFAAmF;;aAEnF,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEnE,eAAO,MAAM,4BAA4B;;QAdvC,uEAAuE;;;;;QAKvE,yEAAyE;;;;QAIzE,mFAAmF;;;aAKM,CAAA;AAC3F,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;;;aAGnC,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEpF;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;QAjCpC,uEAAuE;;;;;QAKvE,yEAAyE;;;;QAIzE,mFAAmF;;;IA0BnF,sEAAsE;;aAEtE,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA"}
|
package/dist/public-api-keys.js
CHANGED
|
@@ -13,6 +13,21 @@ import * as v from 'valibot';
|
|
|
13
13
|
// A key is scoped to one account + workspace: every `/api/v1` call it makes is
|
|
14
14
|
// bound to that workspace.
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
16
|
+
/**
|
|
17
|
+
* The permission a key carries on the `/api/v1` surface. An ordered ladder — each level
|
|
18
|
+
* INCLUDES the ones below it (`admin` ⊃ `write` ⊃ `read`), so an endpoint gates on a MINIMUM:
|
|
19
|
+
*
|
|
20
|
+
* - `read` — read-only reads/streams (list services/tasks/pipelines, poll a run, SSE).
|
|
21
|
+
* - `write` — everything `read` can do, PLUS non-destructive mutations (create/start/stop/
|
|
22
|
+
* retry/edit a task, start an initiative run).
|
|
23
|
+
* - `admin` — everything `write` can do, PLUS destructive / merge-adjacent operations
|
|
24
|
+
* (delete a task; future: resolve a merge-review notification, which performs a real merge).
|
|
25
|
+
*
|
|
26
|
+
* The canonical rank order lives beside this schema (`PUBLIC_API_SCOPES`) so both the wire
|
|
27
|
+
* validation and the server-side `scope ≥ required` check read from one source of truth.
|
|
28
|
+
*/
|
|
29
|
+
export const PUBLIC_API_SCOPES = ['read', 'write', 'admin'];
|
|
30
|
+
export const publicApiScopeSchema = v.picklist(PUBLIC_API_SCOPES);
|
|
16
31
|
/** One public-API key as exposed to clients — metadata only, never the secret. */
|
|
17
32
|
export const publicApiKeySchema = v.object({
|
|
18
33
|
/** `pak_*` — also the non-secret lookup id embedded in the raw key. */
|
|
@@ -20,15 +35,23 @@ export const publicApiKeySchema = v.object({
|
|
|
20
35
|
accountId: v.string(),
|
|
21
36
|
workspaceId: v.string(),
|
|
22
37
|
label: v.string(),
|
|
38
|
+
/** What the key is allowed to do on `/api/v1` (read ⊂ write ⊂ admin). */
|
|
39
|
+
scope: publicApiScopeSchema,
|
|
23
40
|
createdAt: v.number(),
|
|
24
41
|
lastUsedAt: v.nullable(v.number()),
|
|
25
42
|
/** Set when the key was revoked (tombstone); a revoked key never authenticates. */
|
|
26
43
|
revokedAt: v.nullable(v.number()),
|
|
27
44
|
});
|
|
28
45
|
export const publicApiKeyListResultSchema = v.object({ keys: v.array(publicApiKeySchema) });
|
|
29
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Mint a new key. A label plus an optional `scope` (the account/workspace scope comes from the
|
|
48
|
+
* mounting route). `scope` defaults to `write` — the safe middle of the ladder: a fresh key can
|
|
49
|
+
* create/start/manage tasks but NOT delete or perform a merge-adjacent action until it is minted
|
|
50
|
+
* `admin` explicitly. Pass `read` for a monitor-only integration.
|
|
51
|
+
*/
|
|
30
52
|
export const createPublicApiKeySchema = v.object({
|
|
31
53
|
label: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(120)),
|
|
54
|
+
scope: v.optional(publicApiScopeSchema, 'write'),
|
|
32
55
|
});
|
|
33
56
|
/**
|
|
34
57
|
* The create response: the key metadata PLUS the raw secret (`cf_live_<id>.<secret>`),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api-keys.js","sourceRoot":"","sources":["../src/public-api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,yCAAyC;AACzC,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,wEAAwE;AACxE,gFAAgF;AAChF,gEAAgE;AAChE,EAAE;AACF,+EAA+E;AAC/E,2BAA2B;AAC3B,8EAA8E;AAE9E,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,uEAAuE;IACvE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,mFAAmF;IACnF,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAClC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;AAG3F
|
|
1
|
+
{"version":3,"file":"public-api-keys.js","sourceRoot":"","sources":["../src/public-api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,yCAAyC;AACzC,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,wEAAwE;AACxE,gFAAgF;AAChF,gEAAgE;AAChE,EAAE;AACF,+EAA+E;AAC/E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU,CAAA;AACpE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;AAGjE,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,uEAAuE;IACvE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,yEAAyE;IACzE,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,mFAAmF;IACnF,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAClC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;AAG3F;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;CACjD,CAAC,CAAA;AAGF;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,GAAG,EAAE,kBAAkB;IACvB,sEAAsE;IACtE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAA"}
|
|
@@ -31,6 +31,7 @@ export declare const listPublicApiKeysContract: {
|
|
|
31
31
|
readonly accountId: import("valibot").StringSchema<undefined>;
|
|
32
32
|
readonly workspaceId: import("valibot").StringSchema<undefined>;
|
|
33
33
|
readonly label: import("valibot").StringSchema<undefined>;
|
|
34
|
+
readonly scope: import("valibot").PicklistSchema<readonly ["read", "write", "admin"], undefined>;
|
|
34
35
|
readonly createdAt: import("valibot").NumberSchema<undefined>;
|
|
35
36
|
readonly lastUsedAt: import("valibot").NullableSchema<import("valibot").NumberSchema<undefined>, undefined>;
|
|
36
37
|
readonly revokedAt: import("valibot").NullableSchema<import("valibot").NumberSchema<undefined>, undefined>;
|
|
@@ -43,6 +44,7 @@ export declare const createPublicApiKeyContract: {
|
|
|
43
44
|
readonly pathResolver: () => string;
|
|
44
45
|
readonly requestBodySchema: import("valibot").ObjectSchema<{
|
|
45
46
|
readonly label: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").TrimAction, import("valibot").MinLengthAction<string, 1, undefined>, import("valibot").MaxLengthAction<string, 120, undefined>]>;
|
|
47
|
+
readonly scope: import("valibot").OptionalSchema<import("valibot").PicklistSchema<readonly ["read", "write", "admin"], undefined>, "write">;
|
|
46
48
|
}, undefined>;
|
|
47
49
|
readonly responsesByStatusCode: {
|
|
48
50
|
readonly '4xx': import("valibot").ObjectSchema<{
|
|
@@ -73,6 +75,7 @@ export declare const createPublicApiKeyContract: {
|
|
|
73
75
|
readonly accountId: import("valibot").StringSchema<undefined>;
|
|
74
76
|
readonly workspaceId: import("valibot").StringSchema<undefined>;
|
|
75
77
|
readonly label: import("valibot").StringSchema<undefined>;
|
|
78
|
+
readonly scope: import("valibot").PicklistSchema<readonly ["read", "write", "admin"], undefined>;
|
|
76
79
|
readonly createdAt: import("valibot").NumberSchema<undefined>;
|
|
77
80
|
readonly lastUsedAt: import("valibot").NullableSchema<import("valibot").NumberSchema<undefined>, undefined>;
|
|
78
81
|
readonly revokedAt: import("valibot").NullableSchema<import("valibot").NumberSchema<undefined>, undefined>;
|
|
@@ -631,6 +634,41 @@ export declare const getPublicRunContract: {
|
|
|
631
634
|
}, undefined>;
|
|
632
635
|
};
|
|
633
636
|
};
|
|
637
|
+
/** Delete a task (and its run history). Destructive — requires an `admin`-scoped key. */
|
|
638
|
+
export declare const deletePublicTaskContract: {
|
|
639
|
+
readonly method: "delete";
|
|
640
|
+
readonly requestPathParamsSchema: import("valibot").ObjectSchema<{
|
|
641
|
+
taskId: import("valibot").StringSchema<undefined>;
|
|
642
|
+
}, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
|
|
643
|
+
readonly pathResolver: ({ taskId }: {
|
|
644
|
+
taskId: string;
|
|
645
|
+
}) => string;
|
|
646
|
+
readonly responsesByStatusCode: {
|
|
647
|
+
readonly '4xx': import("valibot").ObjectSchema<{
|
|
648
|
+
readonly error: import("valibot").ObjectSchema<{
|
|
649
|
+
readonly code: import("valibot").StringSchema<undefined>;
|
|
650
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
651
|
+
readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
|
|
652
|
+
readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
653
|
+
readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
654
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
655
|
+
}, undefined>, undefined>, undefined>;
|
|
656
|
+
}, undefined>;
|
|
657
|
+
}, undefined>;
|
|
658
|
+
readonly '5xx': import("valibot").ObjectSchema<{
|
|
659
|
+
readonly error: import("valibot").ObjectSchema<{
|
|
660
|
+
readonly code: import("valibot").StringSchema<undefined>;
|
|
661
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
662
|
+
readonly details: import("valibot").OptionalSchema<import("valibot").UnknownSchema, undefined>;
|
|
663
|
+
readonly issues: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
664
|
+
readonly path: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
665
|
+
readonly message: import("valibot").StringSchema<undefined>;
|
|
666
|
+
}, undefined>, undefined>, undefined>;
|
|
667
|
+
}, undefined>;
|
|
668
|
+
}, undefined>;
|
|
669
|
+
readonly 204: typeof ContractNoBody;
|
|
670
|
+
};
|
|
671
|
+
};
|
|
634
672
|
/** List the workspace's pipelines (id/name/steps + a headless-startable flag). */
|
|
635
673
|
export declare const listPublicPipelinesContract: {
|
|
636
674
|
readonly method: "get";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/routes/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAuC3E,eAAO,MAAM,yBAAyB
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/routes/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAuC3E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIpC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAIF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKtC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAIF,4DAA4D;AAC5D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIrC,CAAA;AAEF,qCAAqC;AACrC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnC,CAAA;AAEF,0FAA0F;AAC1F,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKzC,CAAA;AAEF,2BAA2B;AAC3B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhC,CAAA;AAEF,0BAA0B;AAC1B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,yDAAyD;AACzD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnC,CAAA;AAEF,gGAAgG;AAChG,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMjC,CAAA;AAEF,iCAAiC;AACjC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,yFAAyF;AACzF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAEF,yFAAyF;AACzF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAA;AAIF,kFAAkF;AAClF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAItC,CAAA"}
|
|
@@ -115,6 +115,13 @@ export const getPublicRunContract = defineApiContract({
|
|
|
115
115
|
pathResolver: ({ taskId }) => `/api/v1/tasks/${taskId}/run`,
|
|
116
116
|
responsesByStatusCode: { 200: publicRunSchema, ...errorResponses },
|
|
117
117
|
});
|
|
118
|
+
/** Delete a task (and its run history). Destructive — requires an `admin`-scoped key. */
|
|
119
|
+
export const deletePublicTaskContract = defineApiContract({
|
|
120
|
+
method: 'delete',
|
|
121
|
+
requestPathParamsSchema: taskIdParams,
|
|
122
|
+
pathResolver: ({ taskId }) => `/api/v1/tasks/${taskId}`,
|
|
123
|
+
responsesByStatusCode: { 204: ContractNoBody, ...errorResponses },
|
|
124
|
+
});
|
|
118
125
|
// ---- pipeline discovery (key-authenticated) --------------------------------
|
|
119
126
|
/** List the workspace's pipelines (id/name/steps + a headless-startable flag). */
|
|
120
127
|
export const listPublicPipelinesContract = defineApiContract({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/routes/public-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/routes/public-api.ts"],"names":[],"mappings":"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"}
|