@pipeline-builder/api-core 3.1.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/LICENSE +202 -0
- package/README.md +51 -0
- package/lib/constants/ai-providers.d.ts +41 -0
- package/lib/constants/ai-providers.js +88 -0
- package/lib/constants/http-status.d.ts +24 -0
- package/lib/constants/http-status.js +29 -0
- package/lib/constants/index.d.ts +3 -0
- package/lib/constants/index.js +22 -0
- package/lib/constants/time.d.ts +10 -0
- package/lib/constants/time.js +16 -0
- package/lib/errors/app-errors.d.ts +30 -0
- package/lib/errors/app-errors.js +62 -0
- package/lib/errors/index.d.ts +1 -0
- package/lib/errors/index.js +20 -0
- package/lib/helpers/access-helpers.d.ts +40 -0
- package/lib/helpers/access-helpers.js +56 -0
- package/lib/helpers/crud-helpers.d.ts +16 -0
- package/lib/helpers/crud-helpers.js +34 -0
- package/lib/helpers/index.d.ts +4 -0
- package/lib/helpers/index.js +23 -0
- package/lib/helpers/mask-helpers.d.ts +33 -0
- package/lib/helpers/mask-helpers.js +54 -0
- package/lib/helpers/sse-helpers.d.ts +13 -0
- package/lib/helpers/sse-helpers.js +40 -0
- package/lib/index.d.ts +57 -0
- package/lib/index.js +86 -0
- package/lib/middleware/auth.d.ts +50 -0
- package/lib/middleware/auth.js +171 -0
- package/lib/middleware/index.d.ts +1 -0
- package/lib/middleware/index.js +20 -0
- package/lib/openapi/extend-zod.d.ts +1 -0
- package/lib/openapi/extend-zod.js +8 -0
- package/lib/openapi/index.d.ts +2 -0
- package/lib/openapi/index.js +10 -0
- package/lib/openapi/registry.d.ts +17 -0
- package/lib/openapi/registry.js +42 -0
- package/lib/openapi/routes/billing-routes.d.ts +1 -0
- package/lib/openapi/routes/billing-routes.js +69 -0
- package/lib/openapi/routes/index.d.ts +5 -0
- package/lib/openapi/routes/index.js +22 -0
- package/lib/openapi/routes/message-routes.d.ts +1 -0
- package/lib/openapi/routes/message-routes.js +108 -0
- package/lib/openapi/routes/pipeline-routes.d.ts +1 -0
- package/lib/openapi/routes/pipeline-routes.js +90 -0
- package/lib/openapi/routes/plugin-routes.d.ts +1 -0
- package/lib/openapi/routes/plugin-routes.js +99 -0
- package/lib/openapi/routes/quota-routes.d.ts +1 -0
- package/lib/openapi/routes/quota-routes.js +65 -0
- package/lib/openapi/schema-registry.d.ts +25 -0
- package/lib/openapi/schema-registry.js +95 -0
- package/lib/routes/health.d.ts +47 -0
- package/lib/routes/health.js +81 -0
- package/lib/routes/index.d.ts +1 -0
- package/lib/routes/index.js +20 -0
- package/lib/services/admin-audit.d.ts +13 -0
- package/lib/services/admin-audit.js +31 -0
- package/lib/services/cache-service.d.ts +108 -0
- package/lib/services/cache-service.js +212 -0
- package/lib/services/compliance-client.d.ts +46 -0
- package/lib/services/compliance-client.js +102 -0
- package/lib/services/compliance-event-subscriber.d.ts +11 -0
- package/lib/services/compliance-event-subscriber.js +60 -0
- package/lib/services/compliance-queue.d.ts +11 -0
- package/lib/services/compliance-queue.js +38 -0
- package/lib/services/entity-events.d.ts +44 -0
- package/lib/services/entity-events.js +63 -0
- package/lib/services/http-client.d.ts +108 -0
- package/lib/services/http-client.js +285 -0
- package/lib/services/index.d.ts +10 -0
- package/lib/services/index.js +40 -0
- package/lib/services/quota.d.ts +59 -0
- package/lib/services/quota.js +137 -0
- package/lib/services/retry-strategy.d.ts +74 -0
- package/lib/services/retry-strategy.js +127 -0
- package/lib/types/billing.d.ts +47 -0
- package/lib/types/billing.js +5 -0
- package/lib/types/common.d.ts +161 -0
- package/lib/types/common.js +53 -0
- package/lib/types/error-codes.d.ts +38 -0
- package/lib/types/error-codes.js +77 -0
- package/lib/types/feature-flags.d.ts +38 -0
- package/lib/types/feature-flags.js +107 -0
- package/lib/types/http.d.ts +37 -0
- package/lib/types/http.js +5 -0
- package/lib/types/index.d.ts +7 -0
- package/lib/types/index.js +26 -0
- package/lib/types/pipeline.d.ts +70 -0
- package/lib/types/pipeline.js +44 -0
- package/lib/types/quota-tiers.d.ts +23 -0
- package/lib/types/quota-tiers.js +26 -0
- package/lib/utils/alias-resolver.d.ts +16 -0
- package/lib/utils/alias-resolver.js +49 -0
- package/lib/utils/headers.d.ts +18 -0
- package/lib/utils/headers.js +24 -0
- package/lib/utils/identity.d.ts +61 -0
- package/lib/utils/identity.js +75 -0
- package/lib/utils/index.d.ts +7 -0
- package/lib/utils/index.js +26 -0
- package/lib/utils/logger.d.ts +28 -0
- package/lib/utils/logger.js +77 -0
- package/lib/utils/object.d.ts +13 -0
- package/lib/utils/object.js +21 -0
- package/lib/utils/params.d.ts +89 -0
- package/lib/utils/params.js +148 -0
- package/lib/utils/response.d.ts +142 -0
- package/lib/utils/response.js +237 -0
- package/lib/validation/ai-schemas.d.ts +61 -0
- package/lib/validation/ai-schemas.js +81 -0
- package/lib/validation/common-schemas.d.ts +72 -0
- package/lib/validation/common-schemas.js +58 -0
- package/lib/validation/index.d.ts +6 -0
- package/lib/validation/index.js +25 -0
- package/lib/validation/message-schemas.d.ts +79 -0
- package/lib/validation/message-schemas.js +42 -0
- package/lib/validation/middleware.d.ts +60 -0
- package/lib/validation/middleware.js +77 -0
- package/lib/validation/pipeline-schemas.d.ts +135 -0
- package/lib/validation/pipeline-schemas.js +85 -0
- package/lib/validation/plugin-schemas.d.ts +127 -0
- package/lib/validation/plugin-schemas.js +84 -0
- package/openapi.yaml +292 -0
- package/package.json +127 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.registerPipelineRoutes = registerPipelineRoutes;
|
|
6
|
+
const registry_1 = require("../registry");
|
|
7
|
+
const tags = ['Pipelines'];
|
|
8
|
+
const auth = [{ bearerAuth: [] }];
|
|
9
|
+
function registerPipelineRoutes() {
|
|
10
|
+
registry_1.registry.registerPath({
|
|
11
|
+
method: 'get',
|
|
12
|
+
path: '/pipelines',
|
|
13
|
+
summary: 'List pipelines',
|
|
14
|
+
description: 'List pipelines with pagination, filtering, and sorting.',
|
|
15
|
+
tags,
|
|
16
|
+
security: auth,
|
|
17
|
+
responses: { 200: { description: 'Paginated list of pipelines' }, 401: { description: 'Unauthorized' } },
|
|
18
|
+
});
|
|
19
|
+
registry_1.registry.registerPath({
|
|
20
|
+
method: 'get',
|
|
21
|
+
path: '/pipelines/find',
|
|
22
|
+
summary: 'Find a single pipeline',
|
|
23
|
+
description: 'Find a single pipeline matching the query filters.',
|
|
24
|
+
tags,
|
|
25
|
+
security: auth,
|
|
26
|
+
responses: { 200: { description: 'Pipeline found' }, 404: { description: 'Not found' } },
|
|
27
|
+
});
|
|
28
|
+
registry_1.registry.registerPath({
|
|
29
|
+
method: 'get',
|
|
30
|
+
path: '/pipelines/{id}',
|
|
31
|
+
summary: 'Get pipeline by ID',
|
|
32
|
+
tags,
|
|
33
|
+
security: auth,
|
|
34
|
+
responses: { 200: { description: 'Pipeline details' }, 404: { description: 'Not found' } },
|
|
35
|
+
});
|
|
36
|
+
registry_1.registry.registerPath({
|
|
37
|
+
method: 'post',
|
|
38
|
+
path: '/pipelines',
|
|
39
|
+
summary: 'Create a pipeline',
|
|
40
|
+
description: 'Create a new pipeline configuration. Checks pipeline quota.',
|
|
41
|
+
tags,
|
|
42
|
+
security: auth,
|
|
43
|
+
responses: { 201: { description: 'Pipeline created' }, 400: { description: 'Validation error' }, 429: { description: 'Quota exceeded' } },
|
|
44
|
+
});
|
|
45
|
+
registry_1.registry.registerPath({
|
|
46
|
+
method: 'put',
|
|
47
|
+
path: '/pipelines/{id}',
|
|
48
|
+
summary: 'Update a pipeline',
|
|
49
|
+
tags,
|
|
50
|
+
security: auth,
|
|
51
|
+
responses: { 200: { description: 'Pipeline updated' }, 404: { description: 'Not found' } },
|
|
52
|
+
});
|
|
53
|
+
registry_1.registry.registerPath({
|
|
54
|
+
method: 'delete',
|
|
55
|
+
path: '/pipelines/{id}',
|
|
56
|
+
summary: 'Delete a pipeline',
|
|
57
|
+
description: 'Soft-delete a pipeline by setting isActive to false.',
|
|
58
|
+
tags,
|
|
59
|
+
security: auth,
|
|
60
|
+
responses: { 200: { description: 'Pipeline deleted' }, 404: { description: 'Not found' } },
|
|
61
|
+
});
|
|
62
|
+
registry_1.registry.registerPath({
|
|
63
|
+
method: 'get',
|
|
64
|
+
path: '/pipelines/providers',
|
|
65
|
+
summary: 'List AI providers',
|
|
66
|
+
description: 'List AI providers configured for pipeline generation.',
|
|
67
|
+
tags,
|
|
68
|
+
security: auth,
|
|
69
|
+
responses: { 200: { description: 'List of available AI providers with models' } },
|
|
70
|
+
});
|
|
71
|
+
registry_1.registry.registerPath({
|
|
72
|
+
method: 'post',
|
|
73
|
+
path: '/pipelines/generate',
|
|
74
|
+
summary: 'Generate pipeline via AI',
|
|
75
|
+
description: 'Generate a BuilderProps configuration from a natural language prompt. Returns the complete result when done.',
|
|
76
|
+
tags,
|
|
77
|
+
security: auth,
|
|
78
|
+
responses: { 200: { description: 'Generated pipeline configuration' }, 400: { description: 'Validation error' } },
|
|
79
|
+
});
|
|
80
|
+
registry_1.registry.registerPath({
|
|
81
|
+
method: 'post',
|
|
82
|
+
path: '/pipelines/generate/stream',
|
|
83
|
+
summary: 'Stream pipeline generation via AI',
|
|
84
|
+
description: 'Generate a BuilderProps configuration from a natural language prompt. Streams partial results as SSE events.',
|
|
85
|
+
tags,
|
|
86
|
+
security: auth,
|
|
87
|
+
responses: { 200: { description: 'SSE event stream of partial pipeline objects' }, 400: { description: 'Validation error' } },
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZW5hcGkvcm91dGVzL3BpcGVsaW5lLXJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFPdEMsd0RBd0ZDO0FBN0ZELDBDQUF1QztBQUV2QyxNQUFNLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUVsQyxTQUFnQixzQkFBc0I7SUFDcEMsbUJBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsWUFBWTtRQUNsQixPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLFdBQVcsRUFBRSx5REFBeUQ7UUFDdEUsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxFQUFFO0tBQ3pHLENBQUMsQ0FBQztJQUVILG1CQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixPQUFPLEVBQUUsd0JBQXdCO1FBQ2pDLFdBQVcsRUFBRSxvREFBb0Q7UUFDakUsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFO0tBQ3pGLENBQUMsQ0FBQztJQUVILG1CQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixPQUFPLEVBQUUsb0JBQW9CO1FBQzdCLElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRTtLQUMzRixDQUFDLENBQUM7SUFFSCxtQkFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSxZQUFZO1FBQ2xCLE9BQU8sRUFBRSxtQkFBbUI7UUFDNUIsV0FBVyxFQUFFLDZEQUE2RDtRQUMxRSxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRTtLQUMxSSxDQUFDLENBQUM7SUFFSCxtQkFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUU7S0FDM0YsQ0FBQyxDQUFDO0lBRUgsbUJBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixPQUFPLEVBQUUsbUJBQW1CO1FBQzVCLFdBQVcsRUFBRSxzREFBc0Q7UUFDbkUsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFO0tBQzNGLENBQUMsQ0FBQztJQUVILG1CQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixPQUFPLEVBQUUsbUJBQW1CO1FBQzVCLFdBQVcsRUFBRSx1REFBdUQ7UUFDcEUsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDRDQUE0QyxFQUFFLEVBQUU7S0FDbEYsQ0FBQyxDQUFDO0lBRUgsbUJBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUscUJBQXFCO1FBQzNCLE9BQU8sRUFBRSwwQkFBMEI7UUFDbkMsV0FBVyxFQUFFLDhHQUE4RztRQUMzSCxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0NBQWtDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRTtLQUNsSCxDQUFDLENBQUM7SUFFSCxtQkFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSw0QkFBNEI7UUFDbEMsT0FBTyxFQUFFLG1DQUFtQztRQUM1QyxXQUFXLEVBQUUsOEdBQThHO1FBQzNILElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSw4Q0FBOEMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxFQUFFO0tBQzlILENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmVnaXN0cnkgfSBmcm9tICcuLi9yZWdpc3RyeSc7XG5cbmNvbnN0IHRhZ3MgPSBbJ1BpcGVsaW5lcyddO1xuY29uc3QgYXV0aCA9IFt7IGJlYXJlckF1dGg6IFtdIH1dO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJQaXBlbGluZVJvdXRlcygpOiB2b2lkIHtcbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmVzJyxcbiAgICBzdW1tYXJ5OiAnTGlzdCBwaXBlbGluZXMnLFxuICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBwaXBlbGluZXMgd2l0aCBwYWdpbmF0aW9uLCBmaWx0ZXJpbmcsIGFuZCBzb3J0aW5nLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGFnaW5hdGVkIGxpc3Qgb2YgcGlwZWxpbmVzJyB9LCA0MDE6IHsgZGVzY3JpcHRpb246ICdVbmF1dGhvcml6ZWQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmVzL2ZpbmQnLFxuICAgIHN1bW1hcnk6ICdGaW5kIGEgc2luZ2xlIHBpcGVsaW5lJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZpbmQgYSBzaW5nbGUgcGlwZWxpbmUgbWF0Y2hpbmcgdGhlIHF1ZXJ5IGZpbHRlcnMuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdQaXBlbGluZSBmb3VuZCcgfSwgNDA0OiB7IGRlc2NyaXB0aW9uOiAnTm90IGZvdW5kJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAnZ2V0JyxcbiAgICBwYXRoOiAnL3BpcGVsaW5lcy97aWR9JyxcbiAgICBzdW1tYXJ5OiAnR2V0IHBpcGVsaW5lIGJ5IElEJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdQaXBlbGluZSBkZXRhaWxzJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL3BpcGVsaW5lcycsXG4gICAgc3VtbWFyeTogJ0NyZWF0ZSBhIHBpcGVsaW5lJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NyZWF0ZSBhIG5ldyBwaXBlbGluZSBjb25maWd1cmF0aW9uLiBDaGVja3MgcGlwZWxpbmUgcXVvdGEuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDE6IHsgZGVzY3JpcHRpb246ICdQaXBlbGluZSBjcmVhdGVkJyB9LCA0MDA6IHsgZGVzY3JpcHRpb246ICdWYWxpZGF0aW9uIGVycm9yJyB9LCA0Mjk6IHsgZGVzY3JpcHRpb246ICdRdW90YSBleGNlZWRlZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgcGF0aDogJy9waXBlbGluZXMve2lkfScsXG4gICAgc3VtbWFyeTogJ1VwZGF0ZSBhIHBpcGVsaW5lJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdQaXBlbGluZSB1cGRhdGVkJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdkZWxldGUnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmVzL3tpZH0nLFxuICAgIHN1bW1hcnk6ICdEZWxldGUgYSBwaXBlbGluZScsXG4gICAgZGVzY3JpcHRpb246ICdTb2Z0LWRlbGV0ZSBhIHBpcGVsaW5lIGJ5IHNldHRpbmcgaXNBY3RpdmUgdG8gZmFsc2UuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdQaXBlbGluZSBkZWxldGVkJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGlwZWxpbmVzL3Byb3ZpZGVycycsXG4gICAgc3VtbWFyeTogJ0xpc3QgQUkgcHJvdmlkZXJzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0xpc3QgQUkgcHJvdmlkZXJzIGNvbmZpZ3VyZWQgZm9yIHBpcGVsaW5lIGdlbmVyYXRpb24uJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdMaXN0IG9mIGF2YWlsYWJsZSBBSSBwcm92aWRlcnMgd2l0aCBtb2RlbHMnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL3BpcGVsaW5lcy9nZW5lcmF0ZScsXG4gICAgc3VtbWFyeTogJ0dlbmVyYXRlIHBpcGVsaW5lIHZpYSBBSScsXG4gICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSBhIEJ1aWxkZXJQcm9wcyBjb25maWd1cmF0aW9uIGZyb20gYSBuYXR1cmFsIGxhbmd1YWdlIHByb21wdC4gUmV0dXJucyB0aGUgY29tcGxldGUgcmVzdWx0IHdoZW4gZG9uZS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ0dlbmVyYXRlZCBwaXBlbGluZSBjb25maWd1cmF0aW9uJyB9LCA0MDA6IHsgZGVzY3JpcHRpb246ICdWYWxpZGF0aW9uIGVycm9yJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAncG9zdCcsXG4gICAgcGF0aDogJy9waXBlbGluZXMvZ2VuZXJhdGUvc3RyZWFtJyxcbiAgICBzdW1tYXJ5OiAnU3RyZWFtIHBpcGVsaW5lIGdlbmVyYXRpb24gdmlhIEFJJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dlbmVyYXRlIGEgQnVpbGRlclByb3BzIGNvbmZpZ3VyYXRpb24gZnJvbSBhIG5hdHVyYWwgbGFuZ3VhZ2UgcHJvbXB0LiBTdHJlYW1zIHBhcnRpYWwgcmVzdWx0cyBhcyBTU0UgZXZlbnRzLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnU1NFIGV2ZW50IHN0cmVhbSBvZiBwYXJ0aWFsIHBpcGVsaW5lIG9iamVjdHMnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0gfSxcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function registerPluginRoutes(): void;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.registerPluginRoutes = registerPluginRoutes;
|
|
6
|
+
const registry_1 = require("../registry");
|
|
7
|
+
const tags = ['Plugins'];
|
|
8
|
+
const auth = [{ bearerAuth: [] }];
|
|
9
|
+
function registerPluginRoutes() {
|
|
10
|
+
registry_1.registry.registerPath({
|
|
11
|
+
method: 'get',
|
|
12
|
+
path: '/plugins',
|
|
13
|
+
summary: 'List plugins',
|
|
14
|
+
description: 'List plugins with pagination, filtering, and sorting.',
|
|
15
|
+
tags,
|
|
16
|
+
security: auth,
|
|
17
|
+
responses: { 200: { description: 'Paginated list of plugins' }, 401: { description: 'Unauthorized' } },
|
|
18
|
+
});
|
|
19
|
+
registry_1.registry.registerPath({
|
|
20
|
+
method: 'get',
|
|
21
|
+
path: '/plugins/find',
|
|
22
|
+
summary: 'Find a single plugin',
|
|
23
|
+
description: 'Find a single plugin matching the query filters.',
|
|
24
|
+
tags,
|
|
25
|
+
security: auth,
|
|
26
|
+
responses: { 200: { description: 'Plugin found' }, 404: { description: 'Not found' } },
|
|
27
|
+
});
|
|
28
|
+
registry_1.registry.registerPath({
|
|
29
|
+
method: 'get',
|
|
30
|
+
path: '/plugins/{id}',
|
|
31
|
+
summary: 'Get plugin by ID',
|
|
32
|
+
tags,
|
|
33
|
+
security: auth,
|
|
34
|
+
responses: { 200: { description: 'Plugin details' }, 404: { description: 'Not found' } },
|
|
35
|
+
});
|
|
36
|
+
registry_1.registry.registerPath({
|
|
37
|
+
method: 'post',
|
|
38
|
+
path: '/plugins',
|
|
39
|
+
summary: 'Upload a plugin',
|
|
40
|
+
description: 'Upload a plugin ZIP file with spec. Builds Docker image and saves to database.',
|
|
41
|
+
tags,
|
|
42
|
+
security: auth,
|
|
43
|
+
responses: { 202: { description: 'Plugin build queued' }, 400: { description: 'Validation error' }, 429: { description: 'Quota exceeded' } },
|
|
44
|
+
});
|
|
45
|
+
registry_1.registry.registerPath({
|
|
46
|
+
method: 'put',
|
|
47
|
+
path: '/plugins/{id}',
|
|
48
|
+
summary: 'Update a plugin',
|
|
49
|
+
tags,
|
|
50
|
+
security: auth,
|
|
51
|
+
responses: { 200: { description: 'Plugin updated' }, 404: { description: 'Not found' } },
|
|
52
|
+
});
|
|
53
|
+
registry_1.registry.registerPath({
|
|
54
|
+
method: 'delete',
|
|
55
|
+
path: '/plugins/{id}',
|
|
56
|
+
summary: 'Delete a plugin',
|
|
57
|
+
description: 'Soft-delete a plugin by setting isActive to false.',
|
|
58
|
+
tags,
|
|
59
|
+
security: auth,
|
|
60
|
+
responses: { 200: { description: 'Plugin deleted' }, 404: { description: 'Not found' } },
|
|
61
|
+
});
|
|
62
|
+
registry_1.registry.registerPath({
|
|
63
|
+
method: 'get',
|
|
64
|
+
path: '/plugins/providers',
|
|
65
|
+
summary: 'List AI providers',
|
|
66
|
+
description: 'List AI providers configured for plugin generation.',
|
|
67
|
+
tags,
|
|
68
|
+
security: auth,
|
|
69
|
+
responses: { 200: { description: 'List of available AI providers with models' } },
|
|
70
|
+
});
|
|
71
|
+
registry_1.registry.registerPath({
|
|
72
|
+
method: 'post',
|
|
73
|
+
path: '/plugins/generate',
|
|
74
|
+
summary: 'Generate plugin via AI',
|
|
75
|
+
description: 'Generate a plugin configuration and Dockerfile from a natural language prompt.',
|
|
76
|
+
tags,
|
|
77
|
+
security: auth,
|
|
78
|
+
responses: { 200: { description: 'Generated plugin configuration and Dockerfile' }, 400: { description: 'Validation error' } },
|
|
79
|
+
});
|
|
80
|
+
registry_1.registry.registerPath({
|
|
81
|
+
method: 'post',
|
|
82
|
+
path: '/plugins/generate/stream',
|
|
83
|
+
summary: 'Stream plugin generation via AI',
|
|
84
|
+
description: 'Generate plugin configuration from a natural language prompt. Streams partial results as SSE events.',
|
|
85
|
+
tags,
|
|
86
|
+
security: auth,
|
|
87
|
+
responses: { 200: { description: 'SSE event stream of partial plugin objects' }, 400: { description: 'Validation error' } },
|
|
88
|
+
});
|
|
89
|
+
registry_1.registry.registerPath({
|
|
90
|
+
method: 'post',
|
|
91
|
+
path: '/plugins/deploy-generated',
|
|
92
|
+
summary: 'Deploy AI-generated plugin',
|
|
93
|
+
description: 'Build Docker image from AI-generated Dockerfile and save plugin to database. Requires admin.',
|
|
94
|
+
tags,
|
|
95
|
+
security: auth,
|
|
96
|
+
responses: { 202: { description: 'Plugin build queued' }, 400: { description: 'Validation error' }, 403: { description: 'Admin required' }, 429: { description: 'Quota exceeded' } },
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcGVuYXBpL3JvdXRlcy9wbHVnaW4tcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOztBQU90QyxvREFrR0M7QUF2R0QsMENBQXVDO0FBRXZDLE1BQU0sSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWxDLFNBQWdCLG9CQUFvQjtJQUNsQyxtQkFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxVQUFVO1FBQ2hCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLFdBQVcsRUFBRSx1REFBdUQ7UUFDcEUsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxFQUFFO0tBQ3ZHLENBQUMsQ0FBQztJQUVILG1CQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLGVBQWU7UUFDckIsT0FBTyxFQUFFLHNCQUFzQjtRQUMvQixXQUFXLEVBQUUsa0RBQWtEO1FBQy9ELElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUU7S0FDdkYsQ0FBQyxDQUFDO0lBRUgsbUJBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixPQUFPLEVBQUUsa0JBQWtCO1FBQzNCLElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRTtLQUN6RixDQUFDLENBQUM7SUFFSCxtQkFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSxVQUFVO1FBQ2hCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsV0FBVyxFQUFFLGdGQUFnRjtRQUM3RixJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRTtLQUM3SSxDQUFDLENBQUM7SUFFSCxtQkFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxlQUFlO1FBQ3JCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFO0tBQ3pGLENBQUMsQ0FBQztJQUVILG1CQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLElBQUksRUFBRSxlQUFlO1FBQ3JCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsV0FBVyxFQUFFLG9EQUFvRDtRQUNqRSxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUU7S0FDekYsQ0FBQyxDQUFDO0lBRUgsbUJBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLE9BQU8sRUFBRSxtQkFBbUI7UUFDNUIsV0FBVyxFQUFFLHFEQUFxRDtRQUNsRSxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsNENBQTRDLEVBQUUsRUFBRTtLQUNsRixDQUFDLENBQUM7SUFFSCxtQkFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSxtQkFBbUI7UUFDekIsT0FBTyxFQUFFLHdCQUF3QjtRQUNqQyxXQUFXLEVBQUUsZ0ZBQWdGO1FBQzdGLElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSwrQ0FBK0MsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxFQUFFO0tBQy9ILENBQUMsQ0FBQztJQUVILG1CQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsSUFBSSxFQUFFLDBCQUEwQjtRQUNoQyxPQUFPLEVBQUUsaUNBQWlDO1FBQzFDLFdBQVcsRUFBRSxzR0FBc0c7UUFDbkgsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDRDQUE0QyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLEVBQUU7S0FDNUgsQ0FBQyxDQUFDO0lBRUgsbUJBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLE1BQU07UUFDZCxJQUFJLEVBQUUsMkJBQTJCO1FBQ2pDLE9BQU8sRUFBRSw0QkFBNEI7UUFDckMsV0FBVyxFQUFFLDhGQUE4RjtRQUMzRyxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRTtLQUNyTCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJlZ2lzdHJ5IH0gZnJvbSAnLi4vcmVnaXN0cnknO1xuXG5jb25zdCB0YWdzID0gWydQbHVnaW5zJ107XG5jb25zdCBhdXRoID0gW3sgYmVhcmVyQXV0aDogW10gfV07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclBsdWdpblJvdXRlcygpOiB2b2lkIHtcbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGx1Z2lucycsXG4gICAgc3VtbWFyeTogJ0xpc3QgcGx1Z2lucycsXG4gICAgZGVzY3JpcHRpb246ICdMaXN0IHBsdWdpbnMgd2l0aCBwYWdpbmF0aW9uLCBmaWx0ZXJpbmcsIGFuZCBzb3J0aW5nLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGFnaW5hdGVkIGxpc3Qgb2YgcGx1Z2lucycgfSwgNDAxOiB7IGRlc2NyaXB0aW9uOiAnVW5hdXRob3JpemVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAnZ2V0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMvZmluZCcsXG4gICAgc3VtbWFyeTogJ0ZpbmQgYSBzaW5nbGUgcGx1Z2luJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZpbmQgYSBzaW5nbGUgcGx1Z2luIG1hdGNoaW5nIHRoZSBxdWVyeSBmaWx0ZXJzLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIGZvdW5kJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGx1Z2lucy97aWR9JyxcbiAgICBzdW1tYXJ5OiAnR2V0IHBsdWdpbiBieSBJRCcsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIGRldGFpbHMnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGx1Z2lucycsXG4gICAgc3VtbWFyeTogJ1VwbG9hZCBhIHBsdWdpbicsXG4gICAgZGVzY3JpcHRpb246ICdVcGxvYWQgYSBwbHVnaW4gWklQIGZpbGUgd2l0aCBzcGVjLiBCdWlsZHMgRG9ja2VyIGltYWdlIGFuZCBzYXZlcyB0byBkYXRhYmFzZS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMjogeyBkZXNjcmlwdGlvbjogJ1BsdWdpbiBidWlsZCBxdWV1ZWQnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0sIDQyOTogeyBkZXNjcmlwdGlvbjogJ1F1b3RhIGV4Y2VlZGVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAncHV0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMve2lkfScsXG4gICAgc3VtbWFyeTogJ1VwZGF0ZSBhIHBsdWdpbicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIHVwZGF0ZWQnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgcGF0aDogJy9wbHVnaW5zL3tpZH0nLFxuICAgIHN1bW1hcnk6ICdEZWxldGUgYSBwbHVnaW4nLFxuICAgIGRlc2NyaXB0aW9uOiAnU29mdC1kZWxldGUgYSBwbHVnaW4gYnkgc2V0dGluZyBpc0FjdGl2ZSB0byBmYWxzZS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1BsdWdpbiBkZWxldGVkJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGx1Z2lucy9wcm92aWRlcnMnLFxuICAgIHN1bW1hcnk6ICdMaXN0IEFJIHByb3ZpZGVycycsXG4gICAgZGVzY3JpcHRpb246ICdMaXN0IEFJIHByb3ZpZGVycyBjb25maWd1cmVkIGZvciBwbHVnaW4gZ2VuZXJhdGlvbi4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ0xpc3Qgb2YgYXZhaWxhYmxlIEFJIHByb3ZpZGVycyB3aXRoIG1vZGVscycgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGx1Z2lucy9nZW5lcmF0ZScsXG4gICAgc3VtbWFyeTogJ0dlbmVyYXRlIHBsdWdpbiB2aWEgQUknLFxuICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGUgYSBwbHVnaW4gY29uZmlndXJhdGlvbiBhbmQgRG9ja2VyZmlsZSBmcm9tIGEgbmF0dXJhbCBsYW5ndWFnZSBwcm9tcHQuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdHZW5lcmF0ZWQgcGx1Z2luIGNvbmZpZ3VyYXRpb24gYW5kIERvY2tlcmZpbGUnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMvZ2VuZXJhdGUvc3RyZWFtJyxcbiAgICBzdW1tYXJ5OiAnU3RyZWFtIHBsdWdpbiBnZW5lcmF0aW9uIHZpYSBBSScsXG4gICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSBwbHVnaW4gY29uZmlndXJhdGlvbiBmcm9tIGEgbmF0dXJhbCBsYW5ndWFnZSBwcm9tcHQuIFN0cmVhbXMgcGFydGlhbCByZXN1bHRzIGFzIFNTRSBldmVudHMuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdTU0UgZXZlbnQgc3RyZWFtIG9mIHBhcnRpYWwgcGx1Z2luIG9iamVjdHMnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMvZGVwbG95LWdlbmVyYXRlZCcsXG4gICAgc3VtbWFyeTogJ0RlcGxveSBBSS1nZW5lcmF0ZWQgcGx1Z2luJyxcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIERvY2tlciBpbWFnZSBmcm9tIEFJLWdlbmVyYXRlZCBEb2NrZXJmaWxlIGFuZCBzYXZlIHBsdWdpbiB0byBkYXRhYmFzZS4gUmVxdWlyZXMgYWRtaW4uJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDI6IHsgZGVzY3JpcHRpb246ICdQbHVnaW4gYnVpbGQgcXVldWVkJyB9LCA0MDA6IHsgZGVzY3JpcHRpb246ICdWYWxpZGF0aW9uIGVycm9yJyB9LCA0MDM6IHsgZGVzY3JpcHRpb246ICdBZG1pbiByZXF1aXJlZCcgfSwgNDI5OiB7IGRlc2NyaXB0aW9uOiAnUXVvdGEgZXhjZWVkZWQnIH0gfSxcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function registerQuotaRoutes(): void;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.registerQuotaRoutes = registerQuotaRoutes;
|
|
6
|
+
const registry_1 = require("../registry");
|
|
7
|
+
const tags = ['Quotas'];
|
|
8
|
+
const auth = [{ bearerAuth: [] }];
|
|
9
|
+
function registerQuotaRoutes() {
|
|
10
|
+
registry_1.registry.registerPath({
|
|
11
|
+
method: 'get',
|
|
12
|
+
path: '/quotas',
|
|
13
|
+
summary: 'Get own quotas',
|
|
14
|
+
description: 'Get quota usage and limits for the current organization (from JWT).',
|
|
15
|
+
tags,
|
|
16
|
+
security: auth,
|
|
17
|
+
responses: { 200: { description: 'Organization quota details' } },
|
|
18
|
+
});
|
|
19
|
+
registry_1.registry.registerPath({
|
|
20
|
+
method: 'get',
|
|
21
|
+
path: '/quotas/all',
|
|
22
|
+
summary: 'Get all org quotas',
|
|
23
|
+
description: 'Get quotas for all organizations. System admin only.',
|
|
24
|
+
tags,
|
|
25
|
+
security: auth,
|
|
26
|
+
responses: { 200: { description: 'All organization quotas' }, 403: { description: 'Admin required' } },
|
|
27
|
+
});
|
|
28
|
+
registry_1.registry.registerPath({
|
|
29
|
+
method: 'get',
|
|
30
|
+
path: '/quotas/{orgId}',
|
|
31
|
+
summary: 'Get org quotas',
|
|
32
|
+
description: 'Get quota usage and limits for a specific organization.',
|
|
33
|
+
tags,
|
|
34
|
+
security: auth,
|
|
35
|
+
responses: { 200: { description: 'Organization quota details' }, 404: { description: 'Organization not found' } },
|
|
36
|
+
});
|
|
37
|
+
registry_1.registry.registerPath({
|
|
38
|
+
method: 'get',
|
|
39
|
+
path: '/quotas/{orgId}/{quotaType}',
|
|
40
|
+
summary: 'Get specific quota',
|
|
41
|
+
description: 'Get a specific quota type for an organization.',
|
|
42
|
+
tags,
|
|
43
|
+
security: auth,
|
|
44
|
+
responses: { 200: { description: 'Quota type details' } },
|
|
45
|
+
});
|
|
46
|
+
registry_1.registry.registerPath({
|
|
47
|
+
method: 'put',
|
|
48
|
+
path: '/quotas/{orgId}',
|
|
49
|
+
summary: 'Update org quotas',
|
|
50
|
+
description: 'Update quota limits for an organization. System admin only.',
|
|
51
|
+
tags,
|
|
52
|
+
security: auth,
|
|
53
|
+
responses: { 200: { description: 'Quotas updated' }, 403: { description: 'Admin required' } },
|
|
54
|
+
});
|
|
55
|
+
registry_1.registry.registerPath({
|
|
56
|
+
method: 'post',
|
|
57
|
+
path: '/quotas/{orgId}/reset',
|
|
58
|
+
summary: 'Reset quota usage',
|
|
59
|
+
description: 'Reset usage counters for an organization. Admin only.',
|
|
60
|
+
tags,
|
|
61
|
+
security: auth,
|
|
62
|
+
responses: { 200: { description: 'Quota usage reset' }, 403: { description: 'Admin required' } },
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEtcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZW5hcGkvcm91dGVzL3F1b3RhLXJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFPdEMsa0RBNERDO0FBakVELDBDQUF1QztBQUV2QyxNQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUVsQyxTQUFnQixtQkFBbUI7SUFDakMsbUJBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsV0FBVyxFQUFFLHFFQUFxRTtRQUNsRixJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsRUFBRTtLQUNsRSxDQUFDLENBQUM7SUFFSCxtQkFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxhQUFhO1FBQ25CLE9BQU8sRUFBRSxvQkFBb0I7UUFDN0IsV0FBVyxFQUFFLHNEQUFzRDtRQUNuRSxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUseUJBQXlCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRTtLQUN2RyxDQUFDLENBQUM7SUFFSCxtQkFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsT0FBTyxFQUFFLGdCQUFnQjtRQUN6QixXQUFXLEVBQUUseURBQXlEO1FBQ3RFLElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSw0QkFBNEIsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxFQUFFO0tBQ2xILENBQUMsQ0FBQztJQUVILG1CQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFLDZCQUE2QjtRQUNuQyxPQUFPLEVBQUUsb0JBQW9CO1FBQzdCLFdBQVcsRUFBRSxnREFBZ0Q7UUFDN0QsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLEVBQUU7S0FDMUQsQ0FBQyxDQUFDO0lBRUgsbUJBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUI7UUFDNUIsV0FBVyxFQUFFLDZEQUE2RDtRQUMxRSxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRTtLQUM5RixDQUFDLENBQUM7SUFFSCxtQkFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsTUFBTTtRQUNkLElBQUksRUFBRSx1QkFBdUI7UUFDN0IsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixXQUFXLEVBQUUsdURBQXVEO1FBQ3BFLElBQUk7UUFDSixRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFO0tBQ2pHLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmVnaXN0cnkgfSBmcm9tICcuLi9yZWdpc3RyeSc7XG5cbmNvbnN0IHRhZ3MgPSBbJ1F1b3RhcyddO1xuY29uc3QgYXV0aCA9IFt7IGJlYXJlckF1dGg6IFtdIH1dO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJRdW90YVJvdXRlcygpOiB2b2lkIHtcbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcXVvdGFzJyxcbiAgICBzdW1tYXJ5OiAnR2V0IG93biBxdW90YXMnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2V0IHF1b3RhIHVzYWdlIGFuZCBsaW1pdHMgZm9yIHRoZSBjdXJyZW50IG9yZ2FuaXphdGlvbiAoZnJvbSBKV1QpLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnT3JnYW5pemF0aW9uIHF1b3RhIGRldGFpbHMnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcXVvdGFzL2FsbCcsXG4gICAgc3VtbWFyeTogJ0dldCBhbGwgb3JnIHF1b3RhcycsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgcXVvdGFzIGZvciBhbGwgb3JnYW5pemF0aW9ucy4gU3lzdGVtIGFkbWluIG9ubHkuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdBbGwgb3JnYW5pemF0aW9uIHF1b3RhcycgfSwgNDAzOiB7IGRlc2NyaXB0aW9uOiAnQWRtaW4gcmVxdWlyZWQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcXVvdGFzL3tvcmdJZH0nLFxuICAgIHN1bW1hcnk6ICdHZXQgb3JnIHF1b3RhcycsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgcXVvdGEgdXNhZ2UgYW5kIGxpbWl0cyBmb3IgYSBzcGVjaWZpYyBvcmdhbml6YXRpb24uJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdPcmdhbml6YXRpb24gcXVvdGEgZGV0YWlscycgfSwgNDA0OiB7IGRlc2NyaXB0aW9uOiAnT3JnYW5pemF0aW9uIG5vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2dldCcsXG4gICAgcGF0aDogJy9xdW90YXMve29yZ0lkfS97cXVvdGFUeXBlfScsXG4gICAgc3VtbWFyeTogJ0dldCBzcGVjaWZpYyBxdW90YScsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgYSBzcGVjaWZpYyBxdW90YSB0eXBlIGZvciBhbiBvcmdhbml6YXRpb24uJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdRdW90YSB0eXBlIGRldGFpbHMnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwdXQnLFxuICAgIHBhdGg6ICcvcXVvdGFzL3tvcmdJZH0nLFxuICAgIHN1bW1hcnk6ICdVcGRhdGUgb3JnIHF1b3RhcycsXG4gICAgZGVzY3JpcHRpb246ICdVcGRhdGUgcXVvdGEgbGltaXRzIGZvciBhbiBvcmdhbml6YXRpb24uIFN5c3RlbSBhZG1pbiBvbmx5LicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUXVvdGFzIHVwZGF0ZWQnIH0sIDQwMzogeyBkZXNjcmlwdGlvbjogJ0FkbWluIHJlcXVpcmVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAncG9zdCcsXG4gICAgcGF0aDogJy9xdW90YXMve29yZ0lkfS9yZXNldCcsXG4gICAgc3VtbWFyeTogJ1Jlc2V0IHF1b3RhIHVzYWdlJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc2V0IHVzYWdlIGNvdW50ZXJzIGZvciBhbiBvcmdhbml6YXRpb24uIEFkbWluIG9ubHkuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdRdW90YSB1c2FnZSByZXNldCcgfSwgNDAzOiB7IGRlc2NyaXB0aW9uOiAnQWRtaW4gcmVxdWlyZWQnIH0gfSxcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const SuccessResponseSchema: z.ZodObject<{
|
|
3
|
+
success: z.ZodLiteral<true>;
|
|
4
|
+
statusCode: z.ZodNumber;
|
|
5
|
+
data: z.ZodOptional<z.ZodUnknown>;
|
|
6
|
+
message: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export declare const ErrorResponseSchema: z.ZodObject<{
|
|
9
|
+
success: z.ZodLiteral<false>;
|
|
10
|
+
statusCode: z.ZodNumber;
|
|
11
|
+
message: z.ZodString;
|
|
12
|
+
code: z.ZodOptional<z.ZodString>;
|
|
13
|
+
details: z.ZodOptional<z.ZodUnknown>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
export declare const PaginatedResponseSchema: z.ZodObject<{
|
|
16
|
+
success: z.ZodLiteral<true>;
|
|
17
|
+
statusCode: z.ZodNumber;
|
|
18
|
+
data: z.ZodArray<z.ZodUnknown>;
|
|
19
|
+
count: z.ZodNumber;
|
|
20
|
+
limit: z.ZodNumber;
|
|
21
|
+
offset: z.ZodNumber;
|
|
22
|
+
total: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
message: z.ZodOptional<z.ZodString>;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
export declare function registerSchemas(): void;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.PaginatedResponseSchema = exports.ErrorResponseSchema = exports.SuccessResponseSchema = void 0;
|
|
6
|
+
exports.registerSchemas = registerSchemas;
|
|
7
|
+
const zod_1 = require("zod");
|
|
8
|
+
const registry_1 = require("./registry");
|
|
9
|
+
const ai_schemas_1 = require("../validation/ai-schemas");
|
|
10
|
+
const common_schemas_1 = require("../validation/common-schemas");
|
|
11
|
+
const message_schemas_1 = require("../validation/message-schemas");
|
|
12
|
+
const pipeline_schemas_1 = require("../validation/pipeline-schemas");
|
|
13
|
+
const plugin_schemas_1 = require("../validation/plugin-schemas");
|
|
14
|
+
// Response schemas (exported for type usage)
|
|
15
|
+
exports.SuccessResponseSchema = zod_1.z.object({
|
|
16
|
+
success: zod_1.z.literal(true),
|
|
17
|
+
statusCode: zod_1.z.number(),
|
|
18
|
+
data: zod_1.z.unknown().optional(),
|
|
19
|
+
message: zod_1.z.string().optional(),
|
|
20
|
+
});
|
|
21
|
+
exports.ErrorResponseSchema = zod_1.z.object({
|
|
22
|
+
success: zod_1.z.literal(false),
|
|
23
|
+
statusCode: zod_1.z.number(),
|
|
24
|
+
message: zod_1.z.string(),
|
|
25
|
+
code: zod_1.z.string().optional(),
|
|
26
|
+
details: zod_1.z.unknown().optional(),
|
|
27
|
+
});
|
|
28
|
+
exports.PaginatedResponseSchema = zod_1.z.object({
|
|
29
|
+
success: zod_1.z.literal(true),
|
|
30
|
+
statusCode: zod_1.z.number(),
|
|
31
|
+
data: zod_1.z.array(zod_1.z.unknown()),
|
|
32
|
+
count: zod_1.z.number(),
|
|
33
|
+
limit: zod_1.z.number(),
|
|
34
|
+
offset: zod_1.z.number(),
|
|
35
|
+
total: zod_1.z.number().optional(),
|
|
36
|
+
message: zod_1.z.string().optional(),
|
|
37
|
+
});
|
|
38
|
+
function registerSchemas() {
|
|
39
|
+
// Common schemas
|
|
40
|
+
registry_1.registry.register('AccessModifier', common_schemas_1.AccessModifierSchema.openapi({
|
|
41
|
+
description: 'Resource visibility: "public" (visible to all) or "private" (organization only)',
|
|
42
|
+
example: 'private',
|
|
43
|
+
}));
|
|
44
|
+
registry_1.registry.register('PaginationParams', common_schemas_1.PaginationSchema.openapi({
|
|
45
|
+
description: 'Standard pagination and sorting parameters',
|
|
46
|
+
}));
|
|
47
|
+
registry_1.registry.register('BaseFilter', common_schemas_1.BaseFilterSchema.openapi({
|
|
48
|
+
description: 'Common filter fields shared by all entity queries',
|
|
49
|
+
}));
|
|
50
|
+
// Pipeline schemas
|
|
51
|
+
registry_1.registry.register('PipelineFilter', pipeline_schemas_1.PipelineFilterSchema.openapi({
|
|
52
|
+
description: 'Query filters for listing pipelines',
|
|
53
|
+
}));
|
|
54
|
+
registry_1.registry.register('PipelineCreate', pipeline_schemas_1.PipelineCreateSchema.openapi({
|
|
55
|
+
description: 'Request body for creating a new pipeline',
|
|
56
|
+
}));
|
|
57
|
+
registry_1.registry.register('PipelineUpdate', pipeline_schemas_1.PipelineUpdateSchema.openapi({
|
|
58
|
+
description: 'Request body for updating an existing pipeline',
|
|
59
|
+
}));
|
|
60
|
+
// Plugin schemas
|
|
61
|
+
registry_1.registry.register('PluginFilter', plugin_schemas_1.PluginFilterSchema.openapi({
|
|
62
|
+
description: 'Query filters for listing plugins',
|
|
63
|
+
}));
|
|
64
|
+
registry_1.registry.register('PluginCreate', plugin_schemas_1.PluginCreateSchema.openapi({
|
|
65
|
+
description: 'Request body for creating a new plugin',
|
|
66
|
+
}));
|
|
67
|
+
registry_1.registry.register('PluginUpdate', plugin_schemas_1.PluginUpdateSchema.openapi({
|
|
68
|
+
description: 'Request body for updating an existing plugin',
|
|
69
|
+
}));
|
|
70
|
+
registry_1.registry.register('PluginUploadBody', plugin_schemas_1.PluginUploadBodySchema.openapi({
|
|
71
|
+
description: 'Metadata for plugin ZIP upload (multipart form-data)',
|
|
72
|
+
}));
|
|
73
|
+
// Message schemas
|
|
74
|
+
registry_1.registry.register('MessageFilter', message_schemas_1.MessageFilterSchema.openapi({
|
|
75
|
+
description: 'Query filters for listing messages',
|
|
76
|
+
}));
|
|
77
|
+
registry_1.registry.register('MessageCreate', message_schemas_1.MessageCreateSchema.openapi({
|
|
78
|
+
description: 'Request body for creating a new message or announcement',
|
|
79
|
+
}));
|
|
80
|
+
registry_1.registry.register('MessageReply', message_schemas_1.MessageReplySchema.openapi({
|
|
81
|
+
description: 'Request body for replying to a message thread',
|
|
82
|
+
}));
|
|
83
|
+
// AI schemas
|
|
84
|
+
registry_1.registry.register('AIGenerateBody', ai_schemas_1.AIGenerateBodySchema.openapi({
|
|
85
|
+
description: 'Request body for AI-powered generation (pipeline or plugin)',
|
|
86
|
+
}));
|
|
87
|
+
registry_1.registry.register('PluginDeployGenerated', ai_schemas_1.PluginDeployGeneratedSchema.openapi({
|
|
88
|
+
description: 'Request body for deploying an AI-generated plugin',
|
|
89
|
+
}));
|
|
90
|
+
// Response schemas
|
|
91
|
+
registry_1.registry.register('SuccessResponse', exports.SuccessResponseSchema.openapi('SuccessResponse'));
|
|
92
|
+
registry_1.registry.register('ErrorResponse', exports.ErrorResponseSchema.openapi('ErrorResponse'));
|
|
93
|
+
registry_1.registry.register('PaginatedResponse', exports.PaginatedResponseSchema.openapi('PaginatedResponse'));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW5hcGkvc2NoZW1hLXJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7QUEwRHRDLDBDQXVFQztBQS9IRCw2QkFBd0I7QUFFeEIseUNBQXNDO0FBQ3RDLHlEQUdrQztBQUNsQyxpRUFJc0M7QUFDdEMsbUVBSXVDO0FBQ3ZDLHFFQUl3QztBQUN4QyxpRUFLc0M7QUFFdEMsNkNBQTZDO0FBQ2hDLFFBQUEscUJBQXFCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1QyxPQUFPLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDeEIsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdEIsSUFBSSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDL0IsQ0FBQyxDQUFDO0FBRVUsUUFBQSxtQkFBbUIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzFDLE9BQU8sRUFBRSxPQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUN6QixVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNuQixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMzQixPQUFPLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNoQyxDQUFDLENBQUM7QUFFVSxRQUFBLHVCQUF1QixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDOUMsT0FBTyxFQUFFLE9BQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ3hCLFVBQVUsRUFB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TyxDQUFDO1FBQy9ELFdBQVcsRUFBRSw2REFBNkQ7S0FDM0UsQ0FBQyxDQUFDLENBQUM7SUFFSixtQkFBUSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSx3Q0FBMkIsQ0FBQyxPQUFPLENBQUM7UUFDN0UsV0FBVyxFQUFFLG1EQUFtRDtLQUNqRSxDQUFDLENBQUMsQ0FBQztJQUVKLG1CQUFtQjtJQUNuQixtQkFBUSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSw2QkFBcUIsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLG1CQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSwyQkFBbUIsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNqRixtQkFBUSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSwrQkFBdUIsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0FBQy9GLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7IHJlZ2lzdHJ5IH0gZnJvbSAnLi9yZWdpc3RyeSc7XG5pbXBvcnQge1xuICBBSUdlbmVyYXRlQm9keVNjaGVtYSxcbiAgUGx1Z2luRGVwbG95R2VuZXJhdGVkU2NoZW1hLFxufSBmcm9tICcuLi92YWxpZGF0aW9uL2FpLXNjaGVtYXMnO1xuaW1wb3J0IHtcbiAgQWNjZXNzTW9kaWZpZXJTY2hlbWEsXG4gIFBhZ2luYXRpb25TY2hlbWEsXG4gIEJhc2VGaWx0ZXJTY2hlbWEsXG59IGZyb20gJy4uL3ZhbGlkYXRpb24vY29tbW9uLXNjaGVtYXMnO1xuaW1wb3J0IHtcbiAgTWVzc2FnZUZpbHRlclNjaGVtYSxcbiAgTWVzc2FnZUNyZWF0ZVNjaGVtYSxcbiAgTWVzc2FnZVJlcGx5U2NoZW1hLFxufSBmcm9tICcuLi92YWxpZGF0aW9uL21lc3NhZ2Utc2NoZW1hcyc7XG5pbXBvcnQge1xuICBQaXBlbGluZUZpbHRlclNjaGVtYSxcbiAgUGlwZWxpbmVDcmVhdGVTY2hlbWEsXG4gIFBpcGVsaW5lVXBkYXRlU2NoZW1hLFxufSBmcm9tICcuLi92YWxpZGF0aW9uL3BpcGVsaW5lLXNjaGVtYXMnO1xuaW1wb3J0IHtcbiAgUGx1Z2luRmlsdGVyU2NoZW1hLFxuICBQbHVnaW5DcmVhdGVTY2hlbWEsXG4gIFBsdWdpblVwZGF0ZVNjaGVtYSxcbiAgUGx1Z2luVXBsb2FkQm9keVNjaGVtYSxcbn0gZnJvbSAnLi4vdmFsaWRhdGlvbi9wbHVnaW4tc2NoZW1hcyc7XG5cbi8vIFJlc3BvbnNlIHNjaGVtYXMgKGV4cG9ydGVkIGZvciB0eXBlIHVzYWdlKVxuZXhwb3J0IGNvbnN0IFN1Y2Nlc3NSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3VjY2Vzczogei5saXRlcmFsKHRydWUpLFxuICBzdGF0dXNDb2RlOiB6Lm51bWJlcigpLFxuICBkYXRhOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxuICBtZXNzYWdlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IEVycm9yUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHN1Y2Nlc3M6IHoubGl0ZXJhbChmYWxzZSksXG4gIHN0YXR1c0NvZGU6IHoubnVtYmVyKCksXG4gIG1lc3NhZ2U6IHouc3RyaW5nKCksXG4gIGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGV0YWlsczogei51bmtub3duKCkub3B0aW9uYWwoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgUGFnaW5hdGVkUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHN1Y2Nlc3M6IHoubGl0ZXJhbCh0cnVlKSxcbiAgc3RhdHVzQ29kZTogei5udW1iZXIoKSxcbiAgZGF0YTogei5hcnJheSh6LnVua25vd24oKSksXG4gIGNvdW50OiB6Lm51bWJlcigpLFxuICBsaW1pdDogei5udW1iZXIoKSxcbiAgb2Zmc2V0OiB6Lm51bWJlcigpLFxuICB0b3RhbDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBtZXNzYWdlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyU2NoZW1hcygpOiB2b2lkIHtcbiAgLy8gQ29tbW9uIHNjaGVtYXNcbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ0FjY2Vzc01vZGlmaWVyJywgQWNjZXNzTW9kaWZpZXJTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdSZXNvdXJjZSB2aXNpYmlsaXR5OiBcInB1YmxpY1wiICh2aXNpYmxlIHRvIGFsbCkgb3IgXCJwcml2YXRlXCIgKG9yZ2FuaXphdGlvbiBvbmx5KScsXG4gICAgZXhhbXBsZTogJ3ByaXZhdGUnLFxuICB9KSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1BhZ2luYXRpb25QYXJhbXMnLCBQYWdpbmF0aW9uU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnU3RhbmRhcmQgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbWV0ZXJzJyxcbiAgfSkpO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdCYXNlRmlsdGVyJywgQmFzZUZpbHRlclNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ0NvbW1vbiBmaWx0ZXIgZmllbGRzIHNoYXJlZCBieSBhbGwgZW50aXR5IHF1ZXJpZXMnLFxuICB9KSk7XG5cbiAgLy8gUGlwZWxpbmUgc2NoZW1hc1xuICByZWdpc3RyeS5yZWdpc3RlcignUGlwZWxpbmVGaWx0ZXInLCBQaXBlbGluZUZpbHRlclNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1F1ZXJ5IGZpbHRlcnMgZm9yIGxpc3RpbmcgcGlwZWxpbmVzJyxcbiAgfSkpO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdQaXBlbGluZUNyZWF0ZScsIFBpcGVsaW5lQ3JlYXRlU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUmVxdWVzdCBib2R5IGZvciBjcmVhdGluZyBhIG5ldyBwaXBlbGluZScsXG4gIH0pKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcignUGlwZWxpbmVVcGRhdGUnLCBQaXBlbGluZVVwZGF0ZVNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1JlcXVlc3QgYm9keSBmb3IgdXBkYXRpbmcgYW4gZXhpc3RpbmcgcGlwZWxpbmUnLFxuICB9KSk7XG5cbiAgLy8gUGx1Z2luIHNjaGVtYXNcbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1BsdWdpbkZpbHRlcicsIFBsdWdpbkZpbHRlclNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1F1ZXJ5IGZpbHRlcnMgZm9yIGxpc3RpbmcgcGx1Z2lucycsXG4gIH0pKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcignUGx1Z2luQ3JlYXRlJywgUGx1Z2luQ3JlYXRlU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUmVxdWVzdCBib2R5IGZvciBjcmVhdGluZyBhIG5ldyBwbHVnaW4nLFxuICB9KSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1BsdWdpblVwZGF0ZScsIFBsdWdpblVwZGF0ZVNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1JlcXVlc3QgYm9keSBmb3IgdXBkYXRpbmcgYW4gZXhpc3RpbmcgcGx1Z2luJyxcbiAgfSkpO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdQbHVnaW5VcGxvYWRCb2R5JywgUGx1Z2luVXBsb2FkQm9keVNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ01ldGFkYXRhIGZvciBwbHVnaW4gWklQIHVwbG9hZCAobXVsdGlwYXJ0IGZvcm0tZGF0YSknLFxuICB9KSk7XG5cbiAgLy8gTWVzc2FnZSBzY2hlbWFzXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdNZXNzYWdlRmlsdGVyJywgTWVzc2FnZUZpbHRlclNjaGVtYS5vcGVuYXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1F1ZXJ5IGZpbHRlcnMgZm9yIGxpc3RpbmcgbWVzc2FnZXMnLFxuICB9KSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ01lc3NhZ2VDcmVhdGUnLCBNZXNzYWdlQ3JlYXRlU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUmVxdWVzdCBib2R5IGZvciBjcmVhdGluZyBhIG5ldyBtZXNzYWdlIG9yIGFubm91bmNlbWVudCcsXG4gIH0pKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcignTWVzc2FnZVJlcGx5JywgTWVzc2FnZVJlcGx5U2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUmVxdWVzdCBib2R5IGZvciByZXBseWluZyB0byBhIG1lc3NhZ2UgdGhyZWFkJyxcbiAgfSkpO1xuXG4gIC8vIEFJIHNjaGVtYXNcbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ0FJR2VuZXJhdGVCb2R5JywgQUlHZW5lcmF0ZUJvZHlTY2hlbWEub3BlbmFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdSZXF1ZXN0IGJvZHkgZm9yIEFJLXBvd2VyZWQgZ2VuZXJhdGlvbiAocGlwZWxpbmUgb3IgcGx1Z2luKScsXG4gIH0pKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcignUGx1Z2luRGVwbG95R2VuZXJhdGVkJywgUGx1Z2luRGVwbG95R2VuZXJhdGVkU2NoZW1hLm9wZW5hcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUmVxdWVzdCBib2R5IGZvciBkZXBsb3lpbmcgYW4gQUktZ2VuZXJhdGVkIHBsdWdpbicsXG4gIH0pKTtcblxuICAvLyBSZXNwb25zZSBzY2hlbWFzXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyKCdTdWNjZXNzUmVzcG9uc2UnLCBTdWNjZXNzUmVzcG9uc2VTY2hlbWEub3BlbmFwaSgnU3VjY2Vzc1Jlc3BvbnNlJykpO1xuICByZWdpc3RyeS5yZWdpc3RlcignRXJyb3JSZXNwb25zZScsIEVycm9yUmVzcG9uc2VTY2hlbWEub3BlbmFwaSgnRXJyb3JSZXNwb25zZScpKTtcbiAgcmVnaXN0cnkucmVnaXN0ZXIoJ1BhZ2luYXRlZFJlc3BvbnNlJywgUGFnaW5hdGVkUmVzcG9uc2VTY2hlbWEub3BlbmFwaSgnUGFnaW5hdGVkUmVzcG9uc2UnKSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Request, Response, Router } from 'express';
|
|
2
|
+
/**
|
|
3
|
+
* Options for health check endpoint.
|
|
4
|
+
*/
|
|
5
|
+
export interface HealthCheckOptions {
|
|
6
|
+
/** Service name */
|
|
7
|
+
serviceName: string;
|
|
8
|
+
/** Service version (optional) */
|
|
9
|
+
version?: string;
|
|
10
|
+
/** Custom health check function for dependencies */
|
|
11
|
+
checkDependencies?: () => Promise<Record<string, 'connected' | 'disconnected' | 'unknown'>>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Create a health check request handler.
|
|
15
|
+
*
|
|
16
|
+
* @param options - Health check options
|
|
17
|
+
* @returns Express request handler
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* app.get('/health', createHealthCheck({
|
|
22
|
+
* serviceName: 'get-plugin',
|
|
23
|
+
* version: '1.0.0',
|
|
24
|
+
* checkDependencies: async () => ({
|
|
25
|
+
* database: dbConnection.isConnected() ? 'connected' : 'disconnected',
|
|
26
|
+
* }),
|
|
27
|
+
* }));
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function createHealthCheck(options: HealthCheckOptions): (_req: Request, res: Response) => Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Create a health check router with /health endpoint.
|
|
33
|
+
*
|
|
34
|
+
* @param options - Health check options
|
|
35
|
+
* @returns Express router with health endpoint
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const healthRouter = createHealthRouter({
|
|
40
|
+
* serviceName: 'get-plugin',
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* app.use(healthRouter);
|
|
44
|
+
* // Endpoint available at GET /health
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function createHealthRouter(options: HealthCheckOptions): Router;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.createHealthCheck = createHealthCheck;
|
|
6
|
+
exports.createHealthRouter = createHealthRouter;
|
|
7
|
+
const express_1 = require("express");
|
|
8
|
+
const response_1 = require("../utils/response");
|
|
9
|
+
const startTime = Date.now();
|
|
10
|
+
/**
|
|
11
|
+
* Create a health check request handler.
|
|
12
|
+
*
|
|
13
|
+
* @param options - Health check options
|
|
14
|
+
* @returns Express request handler
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* app.get('/health', createHealthCheck({
|
|
19
|
+
* serviceName: 'get-plugin',
|
|
20
|
+
* version: '1.0.0',
|
|
21
|
+
* checkDependencies: async () => ({
|
|
22
|
+
* database: dbConnection.isConnected() ? 'connected' : 'disconnected',
|
|
23
|
+
* }),
|
|
24
|
+
* }));
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
function createHealthCheck(options) {
|
|
28
|
+
return async (_req, res) => {
|
|
29
|
+
const { serviceName, version, checkDependencies } = options;
|
|
30
|
+
const response = {
|
|
31
|
+
status: 'healthy',
|
|
32
|
+
service: serviceName,
|
|
33
|
+
timestamp: new Date().toISOString(),
|
|
34
|
+
uptime: Math.floor((Date.now() - startTime) / 1000),
|
|
35
|
+
};
|
|
36
|
+
if (version) {
|
|
37
|
+
response.version = version;
|
|
38
|
+
}
|
|
39
|
+
if (checkDependencies) {
|
|
40
|
+
try {
|
|
41
|
+
response.dependencies = await checkDependencies();
|
|
42
|
+
// Mark as unhealthy if any dependency is disconnected
|
|
43
|
+
const hasDisconnected = Object.values(response.dependencies).some((status) => status === 'disconnected');
|
|
44
|
+
if (hasDisconnected) {
|
|
45
|
+
response.status = 'unhealthy';
|
|
46
|
+
(0, response_1.sendError)(res, 503, 'Service unhealthy', undefined, response);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
response.status = 'unhealthy';
|
|
52
|
+
response.dependencies = { check: 'disconnected' };
|
|
53
|
+
(0, response_1.sendError)(res, 503, 'Service unhealthy', undefined, response);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
(0, response_1.sendSuccess)(res, 200, response);
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a health check router with /health endpoint.
|
|
62
|
+
*
|
|
63
|
+
* @param options - Health check options
|
|
64
|
+
* @returns Express router with health endpoint
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const healthRouter = createHealthRouter({
|
|
69
|
+
* serviceName: 'get-plugin',
|
|
70
|
+
* });
|
|
71
|
+
*
|
|
72
|
+
* app.use(healthRouter);
|
|
73
|
+
* // Endpoint available at GET /health
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
function createHealthRouter(options) {
|
|
77
|
+
const router = (0, express_1.Router)();
|
|
78
|
+
router.get('/health', createHealthCheck(options));
|
|
79
|
+
return router;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlcy9oZWFsdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBcUN0Qyw4Q0F1Q0M7QUFrQkQsZ0RBSUM7QUFoR0QscUNBQW9EO0FBRXBELGdEQUEyRDtBQUUzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFjN0I7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxPQUEyQjtJQUMzRCxPQUFPLEtBQUssRUFBRSxJQUFhLEVBQUUsR0FBYSxFQUFpQixFQUFFO1FBQzNELE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRTVELE1BQU0sUUFBUSxHQUF3QjtZQUNwQyxNQUFNLEVBQUUsU0FBUztZQUNqQixPQUFPLEVBQUUsV0FBVztZQUNwQixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDbkMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3BELENBQUM7UUFFRixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLFlBQVksR0FBRyxNQUFNLGlCQUFpQixFQUFFLENBQUM7Z0JBRWxELHNEQUFzRDtnQkFDdEQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUMvRCxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FDdEMsQ0FBQztnQkFFRixJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNwQixRQUFRLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztvQkFDOUIsSUFBQSxvQkFBUyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUM5RCxPQUFPO2dCQUNULENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixRQUFRLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztnQkFDOUIsUUFBUSxDQUFDLFlBQVksR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQztnQkFDbEQsSUFBQSxvQkFBUyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM5RCxPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFBLHNCQUFXLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsT0FBMkI7SUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBQSxnQkFBTSxHQUFFLENBQUM7SUFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IFJlcXVlc3QsIFJlc3BvbnNlLCBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IEhlYWx0aENoZWNrUmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcy9jb21tb24nO1xuaW1wb3J0IHsgc2VuZFN1Y2Nlc3MsIHNlbmRFcnJvciB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlJztcblxuY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBoZWFsdGggY2hlY2sgZW5kcG9pbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhbHRoQ2hlY2tPcHRpb25zIHtcbiAgLyoqIFNlcnZpY2UgbmFtZSAqL1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICAvKiogU2VydmljZSB2ZXJzaW9uIChvcHRpb25hbCkgKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBoZWFsdGggY2hlY2sgZnVuY3Rpb24gZm9yIGRlcGVuZGVuY2llcyAqL1xuICBjaGVja0RlcGVuZGVuY2llcz86ICgpID0+IFByb21pc2U8UmVjb3JkPHN0cmluZywgJ2Nvbm5lY3RlZCcgfCAnZGlzY29ubmVjdGVkJyB8ICd1bmtub3duJz4+O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGhlYWx0aCBjaGVjayByZXF1ZXN0IGhhbmRsZXIuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBIZWFsdGggY2hlY2sgb3B0aW9uc1xuICogQHJldHVybnMgRXhwcmVzcyByZXF1ZXN0IGhhbmRsZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXBwLmdldCgnL2hlYWx0aCcsIGNyZWF0ZUhlYWx0aENoZWNrKHtcbiAqICAgc2VydmljZU5hbWU6ICdnZXQtcGx1Z2luJyxcbiAqICAgdmVyc2lvbjogJzEuMC4wJyxcbiAqICAgY2hlY2tEZXBlbmRlbmNpZXM6IGFzeW5jICgpID0+ICh7XG4gKiAgICAgZGF0YWJhc2U6IGRiQ29ubmVjdGlvbi5pc0Nvbm5lY3RlZCgpID8gJ2Nvbm5lY3RlZCcgOiAnZGlzY29ubmVjdGVkJyxcbiAqICAgfSksXG4gKiB9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUhlYWx0aENoZWNrKG9wdGlvbnM6IEhlYWx0aENoZWNrT3B0aW9ucykge1xuICByZXR1cm4gYXN5bmMgKF9yZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCB7IHNlcnZpY2VOYW1lLCB2ZXJzaW9uLCBjaGVja0RlcGVuZGVuY2llcyB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IHJlc3BvbnNlOiBIZWFsdGhDaGVja1Jlc3BvbnNlID0ge1xuICAgICAgc3RhdHVzOiAnaGVhbHRoeScsXG4gICAgICBzZXJ2aWNlOiBzZXJ2aWNlTmFtZSxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdXB0aW1lOiBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSAvIDEwMDApLFxuICAgIH07XG5cbiAgICBpZiAodmVyc2lvbikge1xuICAgICAgcmVzcG9uc2UudmVyc2lvbiA9IHZlcnNpb247XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrRGVwZW5kZW5jaWVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXNwb25zZS5kZXBlbmRlbmNpZXMgPSBhd2FpdCBjaGVja0RlcGVuZGVuY2llcygpO1xuXG4gICAgICAgIC8vIE1hcmsgYXMgdW5oZWFsdGh5IGlmIGFueSBkZXBlbmRlbmN5IGlzIGRpc2Nvbm5lY3RlZFxuICAgICAgICBjb25zdCBoYXNEaXNjb25uZWN0ZWQgPSBPYmplY3QudmFsdWVzKHJlc3BvbnNlLmRlcGVuZGVuY2llcykuc29tZShcbiAgICAgICAgICAoc3RhdHVzKSA9PiBzdGF0dXMgPT09ICdkaXNjb25uZWN0ZWQnLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChoYXNEaXNjb25uZWN0ZWQpIHtcbiAgICAgICAgICByZXNwb25zZS5zdGF0dXMgPSAndW5oZWFsdGh5JztcbiAgICAgICAgICBzZW5kRXJyb3IocmVzLCA1MDMsICdTZXJ2aWNlIHVuaGVhbHRoeScsIHVuZGVmaW5lZCwgcmVzcG9uc2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmVzcG9uc2Uuc3RhdHVzID0gJ3VuaGVhbHRoeSc7XG4gICAgICAgIHJlc3BvbnNlLmRlcGVuZGVuY2llcyA9IHsgY2hlY2s6ICdkaXNjb25uZWN0ZWQnIH07XG4gICAgICAgIHNlbmRFcnJvcihyZXMsIDUwMywgJ1NlcnZpY2UgdW5oZWFsdGh5JywgdW5kZWZpbmVkLCByZXNwb25zZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZW5kU3VjY2VzcyhyZXMsIDIwMCwgcmVzcG9uc2UpO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGhlYWx0aCBjaGVjayByb3V0ZXIgd2l0aCAvaGVhbHRoIGVuZHBvaW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gSGVhbHRoIGNoZWNrIG9wdGlvbnNcbiAqIEByZXR1cm5zIEV4cHJlc3Mgcm91dGVyIHdpdGggaGVhbHRoIGVuZHBvaW50XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGhlYWx0aFJvdXRlciA9IGNyZWF0ZUhlYWx0aFJvdXRlcih7XG4gKiAgIHNlcnZpY2VOYW1lOiAnZ2V0LXBsdWdpbicsXG4gKiB9KTtcbiAqXG4gKiBhcHAudXNlKGhlYWx0aFJvdXRlcik7XG4gKiAvLyBFbmRwb2ludCBhdmFpbGFibGUgYXQgR0VUIC9oZWFsdGhcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSGVhbHRoUm91dGVyKG9wdGlvbnM6IEhlYWx0aENoZWNrT3B0aW9ucyk6IFJvdXRlciB7XG4gIGNvbnN0IHJvdXRlciA9IFJvdXRlcigpO1xuICByb3V0ZXIuZ2V0KCcvaGVhbHRoJywgY3JlYXRlSGVhbHRoQ2hlY2sob3B0aW9ucykpO1xuICByZXR1cm4gcm91dGVyO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './health';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
16
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
__exportStar(require("./health"), exports);
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm91dGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRXRDLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQgKiBmcm9tICcuL2hlYWx0aCc7XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface AuditEntry {
|
|
2
|
+
userId: string;
|
|
3
|
+
userEmail?: string;
|
|
4
|
+
orgId?: string;
|
|
5
|
+
action: string;
|
|
6
|
+
targetType: string;
|
|
7
|
+
targetId?: string;
|
|
8
|
+
targetName?: string;
|
|
9
|
+
detail?: Record<string, unknown>;
|
|
10
|
+
ipAddress?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function logAdminAction(entry: AuditEntry): void;
|
|
13
|
+
export declare function getAuditQueue(): AuditEntry[];
|