diff --git a/.sonarcloud.properties b/.sonarcloud.properties index ecd14a57c4..fffc56548a 100644 --- a/.sonarcloud.properties +++ b/.sonarcloud.properties @@ -1 +1,3 @@ sonar.cpd.exclusions=workspaces/*/packages/app/**, workspaces/*/packages/backend/**, workspaces/*/plugins/*test*/**, **/*.test.*, **/translations/*.ts, **/__fixtures__/*, **/playwright.config.ts +sonar.exclusions=workspaces/*/plugins/orchestrator-common/src/generated/** + diff --git a/workspaces/orchestrator/.changeset/green-readers-visit.md b/workspaces/orchestrator/.changeset/green-readers-visit.md new file mode 100644 index 0000000000..b8aeaa3f73 --- /dev/null +++ b/workspaces/orchestrator/.changeset/green-readers-visit.md @@ -0,0 +1,9 @@ +--- +'@red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki': major +'@red-hat-developer-hub/backstage-plugin-orchestrator-backend': minor +'@red-hat-developer-hub/backstage-plugin-orchestrator-common': minor +'@red-hat-developer-hub/backstage-plugin-orchestrator-node': major +'@red-hat-developer-hub/backstage-plugin-orchestrator': minor +--- + +Adding Workflow Logs endpoint. Loki provider added diff --git a/workspaces/orchestrator/app-config.yaml b/workspaces/orchestrator/app-config.yaml index 6d99881853..f48392273b 100644 --- a/workspaces/orchestrator/app-config.yaml +++ b/workspaces/orchestrator/app-config.yaml @@ -147,6 +147,14 @@ catalog: dynamicPlugins: frontend: {} orchestrator: + # Uncomment and configure to use the log viewer + # workflowLogProvider: + # loki: + # baseUrl: http://localhost:3100 + # Uncomment if using a custom log stream selector + # logStreamSelectors: + # - label: 'selector' + # value: 'value' sonataFlowService: # uncomment the next line to use podman instead of docker # runtime: podman diff --git a/workspaces/orchestrator/package.json b/workspaces/orchestrator/package.json index 1c6097b1e6..235b4f52af 100644 --- a/workspaces/orchestrator/package.json +++ b/workspaces/orchestrator/package.json @@ -55,7 +55,8 @@ "react": "^18", "react-dom": "^18", "refractor@npm:3.6.0/prismjs": "^1.30.0", - "zod-to-json-schema": "3.24.6" + "zod-to-json-schema": "3.24.6", + "@backstage/backend-plugin-api": "1.5.0" }, "prettier": "@backstage/cli/config/prettier", "lint-staged": { diff --git a/workspaces/orchestrator/packages/backend/package.json b/workspaces/orchestrator/packages/backend/package.json index a2e1e0fa27..841716618c 100644 --- a/workspaces/orchestrator/packages/backend/package.json +++ b/workspaces/orchestrator/packages/backend/package.json @@ -51,6 +51,7 @@ "@backstage/plugin-signals-backend": "^0.3.10", "@backstage/plugin-techdocs-backend": "^2.1.2", "@red-hat-developer-hub/backstage-plugin-orchestrator-backend": "workspace:^", + "@red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki": "workspace:^", "@red-hat-developer-hub/backstage-plugin-scaffolder-backend-module-orchestrator": "workspace:^", "app": "link:../app", "better-sqlite3": "^12.0.0", diff --git a/workspaces/orchestrator/packages/backend/src/index.ts b/workspaces/orchestrator/packages/backend/src/index.ts index 1c370ffd35..70d7f1cb00 100644 --- a/workspaces/orchestrator/packages/backend/src/index.ts +++ b/workspaces/orchestrator/packages/backend/src/index.ts @@ -75,4 +75,9 @@ backend.add(import('@backstage/plugin-scaffolder-backend-module-gitlab')); // custom authentication provider module backend.add(import('custom-authentication-provider-module-backend')); +backend.add( + import( + '@red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki' + ), +); backend.start(); diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/.eslintrc.js b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/.eslintrc.js new file mode 100644 index 0000000000..9184408ae4 --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/.eslintrc.js @@ -0,0 +1,16 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/README.md b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/README.md new file mode 100644 index 0000000000..a1cdfb5e09 --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/README.md @@ -0,0 +1,60 @@ +# Orchestrator Backend Module for Loki + +This is an extension module to the `backstage-plugin-orchestrator-backend` plugin. It provides access to the Loki log provider + +## Prerequisites + +Before installing this module, ensure that the Orchestrator backend plugin is integrated into your Backstage instance. Follow the [Orchestrator README](https://github.com/redhat-developer/rhdh-plugins/tree/main/workspaces/orchestrator) for setup instructions. + +This module also requires a Loki `workflowLogProvider` integration to be configured in your `app-config.yaml`. This will be added to the `orchestrator` section and might look something like this: + +``` +orchestrator: + workflowLogProvider: + loki: + baseUrl: http://localhost:3100 + # logStreamSelectors: + # - label: 'app' + # value: '=~".+"' +``` + +The `baseUrl` is required. + +Multiple Log Stream Selectors can be specified in the `logStreamSelectors` section. See the loki docs to learn more about log stream selectors and their values: https://grafana.com/docs/loki/latest/query/log_queries/#log-stream-selector + +## Installation + +To install this backend module: + +```bash +# From your root directory +yarn workspace backend add @red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki +``` + +```ts +// packages/backend/src/index.ts +import { createBackend } from '@backstage/backend-defaults'; + +const backend = createBackend(); + +// orchestrator +backend.add( + import('@red-hat-developer-hub/backstage-plugin-orchestrator-backend'), +); +// orchestrator Log Provider +backend.add( + import( + '@red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki' + ), +); + +backend.start(); +``` + +## Usage + +Once the module is successfully setup, a user can view an orchestrator workflows log. This can be accessed by the new backend endpoint here: RHDH_BACK_END_URL/api/orchestrator/v2/workflows/instances/WORKFLOW_INSTANCE_ID/logs + +Or by clicking the "view log" link on the orchestrator front-end:![alt text](img/view-logs-button.png) + +![alt text](img/viewing-log.png) diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/__fixtures__/mockWorkflowLogs.ts b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/__fixtures__/mockWorkflowLogs.ts new file mode 100644 index 0000000000..48351a3380 --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/__fixtures__/mockWorkflowLogs.ts @@ -0,0 +1,74 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const mockWorkflowLog = { + status: 'success', + data: { + resultType: 'streams', + result: [ + { + stream: { + detected_level: 'error', + service_name: 'unknown_service', + }, + values: [ + [ + '1764952546330041000', + '2025-12-05 16:35:14,644 9eb78e04f727 ERROR [org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl:1316] (executor-thread-14) Unexpected error while executing node createNotification in process instance 7a6d2622-a315-4737-9278-36311ba4583a: org.jbpm.workflow.instance.WorkflowRuntimeException: [sendnotification:7a6d2622-a315-4737-9278-36311ba4583a - createNotification:[uuid=7]] -- RESTEASY004655: Unable to invoke request: org.apache.http.client.ClientProtocolException', + ], + ], + }, + { + stream: { + detected_level: 'info', + service_name: 'unknown_service', + }, + values: [ + [ + '1764952546332968000', + "2025-12-05 16:35:14,668 9eb78e04f727 INFO [org.kie.kogito.serverless.workflow.devservices.DevModeServerlessWorkflowLogger:50] (executor-thread-14) Workflow 'sendnotification' (7a6d2622-a315-4737-9278-36311ba4583a) was started, now 'Error'", + ], + [ + '1764952546327277000', + '2025-12-05 16:35:14,626 9eb78e04f727 INFO [org.kie.kogito.process.workitems.impl.DefaultKogitoWorkItemHandler:105] (executor-thread-14) error workItem WorkItem 7ee1509a-03b4-47e2-891f-31f6d225e520 [name=notifications_createNotification, state=1, processInstanceId=7a6d2622-a315-4737-9278-36311ba4583a, parameters{Parameter={"recipients":["user:development/guest"],"title":"This is a notification","topic":"Manually sent"}, payload={severity=normal, link=https://www.redhat.com, description=Description of the notification, topic=Manually sent, title=This is a notification}, recipients={entityRef=[user:development/guest], type=entity}}] handled by notifications_createNotification transition DefaultWorkItemTransitionImpl [id=activate, data={}, policies=[], termination=null] : jakarta.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request: org.apache.http.client.ClientProtocolException', + ], + [ + '1764952546327248000', + "2025-12-05 16:35:13,632 9eb78e04f727 INFO [org.kie.kogito.serverless.workflow.devservices.DevModeServerlessWorkflowLogger:64] (executor-thread-14) Triggered node 'createNotification' for process 'sendnotification' (7a6d2622-a315-4737-9278-36311ba4583a)", + ], + [ + '1764952546327240000', + "2025-12-05 16:35:13,628 9eb78e04f727 INFO [org.kie.kogito.serverless.workflow.devservices.DevModeServerlessWorkflowLogger:64] (executor-thread-14) Triggered node 'SendNotification' for process 'sendnotification' (7a6d2622-a315-4737-9278-36311ba4583a)", + ], + [ + '1764952546327187000', + "2025-12-05 16:35:13,623 9eb78e04f727 INFO [org.kie.kogito.serverless.workflow.devservices.DevModeServerlessWorkflowLogger:64] (executor-thread-14) Triggered node 'Prepare' for process 'sendnotification' (7a6d2622-a315-4737-9278-36311ba4583a)", + ], + [ + '1764952546327177000', + "2025-12-05 16:35:13,622 9eb78e04f727 INFO [org.kie.kogito.serverless.workflow.devservices.DevModeServerlessWorkflowLogger:64] (executor-thread-14) Triggered node 'Start' for process 'sendnotification' (7a6d2622-a315-4737-9278-36311ba4583a)", + ], + [ + '1764952546327102000', + "2025-12-05 16:35:13,618 9eb78e04f727 INFO [org.kie.kogito.serverless.workflow.devservices.DevModeServerlessWorkflowLogger:40] (executor-thread-14) Starting workflow 'sendnotification' (7a6d2622-a315-4737-9278-36311ba4583a)", + ], + ], + }, + ], + }, +}; + +export default mockWorkflowLog; diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/config.d.ts b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/config.d.ts new file mode 100644 index 0000000000..8014863d53 --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/config.d.ts @@ -0,0 +1,37 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface Config { + /** + * Configuration for the Orchestrator plugin. + */ + orchestrator?: { + workflowLogProvider?: { + loki?: { + /** + * Base URL of the Loki service. + */ + baseUrl: string; + logStreamSelectors?: Array<{ + // label is the selector, something like 'app' or 'service_name', etc... + label: string; + // value is the label matching operator, so something like: '=~".+"' + value: string; + }>; + }; + }; + }; +} diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/img/view-logs-button.png b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/img/view-logs-button.png new file mode 100644 index 0000000000..d69ebff400 Binary files /dev/null and b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/img/view-logs-button.png differ diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/img/viewing-log.png b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/img/viewing-log.png new file mode 100644 index 0000000000..1a29ed680c Binary files /dev/null and b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/img/viewing-log.png differ diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/package.json b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/package.json new file mode 100644 index 0000000000..59995dbc4a --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/package.json @@ -0,0 +1,66 @@ +{ + "name": "@red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki", + "version": "0.1.0", + "license": "Apache-2.0", + "description": "The loki backend module for the orchestrator plugin.", + "main": "src/index.ts", + "types": "src/index.ts", + "publishConfig": { + "access": "public" + }, + "backstage": { + "role": "backend-plugin-module", + "pluginId": "orchestrator", + "pluginPackage": "@red-hat-developer-hub/backstage-plugin-orchestrator-backend" + }, + "exports": { + ".": "./src/index.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "package.json": [ + "package.json" + ] + } + }, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "tsc": "tsc", + "prettier:check": "prettier --ignore-unknown --check .", + "prettier:fix": "prettier --ignore-unknown --write ." + }, + "dependencies": { + "@backstage/backend-plugin-api": "^1.5.0", + "@red-hat-developer-hub/backstage-plugin-orchestrator-common": "workspace:^", + "@red-hat-developer-hub/backstage-plugin-orchestrator-node": "workspace:^", + "luxon": "^3.7.2" + }, + "devDependencies": { + "@backstage/backend-test-utils": "^1.10.0", + "@backstage/cli": "^0.34.5", + "@backstage/config": "^1.3.6" + }, + "files": [ + "dist", + "config.d.ts" + ], + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh-plugins", + "directory": "workspaces/orchestrator/plugins/orchestrator-backend-module-loki" + }, + "keywords": [ + "backstage", + "plugin" + ], + "homepage": "https://red.ht/rhdh", + "bugs": "https://github.com/redhat-developer/rhdh-plugins/issues", + "author": "Red Hat" +} diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/report.api.md b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/report.api.md new file mode 100644 index 0000000000..4a68f9763d --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/report.api.md @@ -0,0 +1,13 @@ +## API Report File for "@red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { BackendFeature } from '@backstage/backend-plugin-api'; + +// @public +const orchestratorModuleLoki: BackendFeature; +export default orchestratorModuleLoki; + +``` diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/index.ts b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/index.ts new file mode 100644 index 0000000000..45bd2b273c --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/index.ts @@ -0,0 +1,23 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * The loki backend module for the orchestrator plugin. + * + * @packageDocumentation + */ + +export { orchestratorModuleLoki as default } from './module'; diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/module.ts b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/module.ts new file mode 100644 index 0000000000..1bc6624772 --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/module.ts @@ -0,0 +1,44 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + coreServices, + createBackendModule, +} from '@backstage/backend-plugin-api'; +import { workflowLogsExtensionEndpoint } from '@red-hat-developer-hub/backstage-plugin-orchestrator-node'; +import { LokiProvider } from './workflowLogsProviders/LokiProvider'; +/** + + * Provides access to the Loki log provider for viewing Orchestrator workflow logs + * + * @public + */ +export const orchestratorModuleLoki = createBackendModule({ + pluginId: 'orchestrator', + moduleId: 'loki', + register(reg) { + reg.registerInit({ + deps: { + config: coreServices.rootConfig, + logger: coreServices.logger, + workflowLogs: workflowLogsExtensionEndpoint, + }, + async init({ config, logger, workflowLogs }) { + logger.info('Initialize the Loki orchestrator backend module'); + workflowLogs.addWorkflowLogProvider(LokiProvider.fromConfig(config)); + }, + }); + }, +}); diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/workflowLogsProviders/LokiProvider.test.ts b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/workflowLogsProviders/LokiProvider.test.ts new file mode 100644 index 0000000000..bacb1fdd31 --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/workflowLogsProviders/LokiProvider.test.ts @@ -0,0 +1,284 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConfigReader } from '@backstage/config'; +import { ProcessInstanceDTO } from '@red-hat-developer-hub/backstage-plugin-orchestrator-common'; +import { LokiProvider } from './LokiProvider'; +import mockWorkflowLog from '../../__fixtures__/mockWorkflowLogs'; + +describe('LokiProvider', () => { + describe('FromConfig', () => { + it('should create a provider when there is an entry in the app-config', () => { + const lokiAppConfig = { + orchestrator: { + workflowLogProvider: { + loki: { + baseUrl: 'http://localhost:3100', + }, + }, + }, + }; + + const lokiConfig = new ConfigReader(lokiAppConfig); + const provider = LokiProvider.fromConfig(lokiConfig); + + // Test for the baseUrl + expect(provider.getBaseURL()).toEqual( + lokiAppConfig.orchestrator.workflowLogProvider.loki.baseUrl, + ); + // Test the providerId + expect(provider.getProviderId()).toEqual('loki'); + + // Test the selectors passed in + // Should be an empty array when nothing is passed in + expect(provider.getSelectors()).toEqual([]); + }); + it('should create a provider with custom selectors', () => { + const lokiAppConfig = { + orchestrator: { + workflowLogProvider: { + loki: { + baseUrl: 'http://localhost:3100', + logStreamSelectors: [ + { + label: 'custom-selector', + value: '=~".+"', + }, + { + label: 'custom-selector1', + value: '=~".+"', + }, + ], + }, + }, + }, + }; + + const lokiConfig = new ConfigReader(lokiAppConfig); + const provider = LokiProvider.fromConfig(lokiConfig); + + // Test the selectors passed in + expect(provider.getSelectors()[0]).toEqual( + lokiAppConfig.orchestrator.workflowLogProvider.loki + .logStreamSelectors[0], + ); + expect(provider.getSelectors()[1]).toEqual( + lokiAppConfig.orchestrator.workflowLogProvider.loki + .logStreamSelectors[1], + ); + }); + }); + describe('fetchWorkflowLogsByInstance', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should pass with defaults', async () => { + const mockResponse: Partial = { + ok: true, + status: 200, + json: jest.fn().mockResolvedValue(mockWorkflowLog), + }; + global.fetch = jest.fn().mockResolvedValue(mockResponse as any); + + const lokiAppConfig = { + orchestrator: { + workflowLogProvider: { + loki: { + baseUrl: 'http://localhost:3100', + }, + }, + }, + }; + + const lokiConfig = new ConfigReader(lokiAppConfig); + const provider = LokiProvider.fromConfig(lokiConfig); + const workflowInstance: ProcessInstanceDTO = { + id: '12345', + processId: '54321', + start: '2025-12-05T16:35:13.621Z', + end: '', + nodes: [], + }; + + const urlToFetch = + 'http://localhost:3100/loki/api/v1/query_range?query=%7Bservice_name%3D%7E%22.%2B%22%7D+%7C%3D%2212345%22&start=2025-12-05T16%3A30%3A13.621Z&end=2026-01-03T16%3A35%3A13.621Z'; + const workflowLogs = + await provider.fetchWorkflowLogsByInstance(workflowInstance); + + const parsedURLToFetch = new URL(urlToFetch); + expect(fetch).toHaveBeenCalledWith(urlToFetch); + expect(parsedURLToFetch.origin).toEqual(provider.getBaseURL()); + expect(parsedURLToFetch.pathname).toEqual('/loki/api/v1/query_range'); + expect(parsedURLToFetch.searchParams.get('end')).toEqual( + '2026-01-03T16:35:13.621Z', + ); + expect(parsedURLToFetch.searchParams.get('start')).toEqual( + '2025-12-05T16:30:13.621Z', + ); // should be 5 minutes before + expect(parsedURLToFetch.searchParams.get('query')).toEqual( + `{service_name=~".+"} |="${workflowInstance.id}"`, + ); + expect(workflowLogs).toHaveProperty('instanceId', workflowInstance.id); + expect(workflowLogs).toHaveProperty('logs'); + expect(workflowLogs.logs.length).toEqual(8); + + expect(workflowLogs.logs[0]).toHaveProperty('id'); + expect(workflowLogs.logs[0]).toHaveProperty('log'); + // Sorted correctly, this id is the last in the mockdata and should be first when returned + expect(workflowLogs.logs[0].id).toEqual('1764952546327102000'); + }); + + it('should have an enddate that had 5 minutes added to it', async () => { + const mockResponse: Partial = { + ok: true, + status: 200, + json: jest.fn().mockResolvedValue(mockWorkflowLog), + }; + global.fetch = jest.fn().mockResolvedValue(mockResponse as any); + + const lokiAppConfig = { + orchestrator: { + workflowLogProvider: { + loki: { + baseUrl: 'http://localhost:3100', + }, + }, + }, + }; + + const lokiConfig = new ConfigReader(lokiAppConfig); + const provider = LokiProvider.fromConfig(lokiConfig); + const workflowInstance: ProcessInstanceDTO = { + id: '12345', + processId: '54321', + start: '2025-12-05T16:35:13.621Z', + end: '2025-12-05T17:35:13.621Z', + nodes: [], + }; + + const urlToFetch = + 'http://localhost:3100/loki/api/v1/query_range?query=%7Bservice_name%3D%7E%22.%2B%22%7D+%7C%3D%2212345%22&start=2025-12-05T16%3A30%3A13.621Z&end=2025-12-05T17%3A40%3A13.621Z'; + + await provider.fetchWorkflowLogsByInstance(workflowInstance); + const parsedURLToFetch = new URL(urlToFetch); + expect(fetch).toHaveBeenCalledWith(urlToFetch); + expect(parsedURLToFetch.searchParams.get('end')).toEqual( + '2025-12-05T17:40:13.621Z', + ); // Should be 5 minutes after + }); + + it('should have a custom log selector and filter', async () => { + const mockResponse: Partial = { + ok: true, + status: 200, + json: jest.fn().mockResolvedValue(mockWorkflowLog), + }; + global.fetch = jest.fn().mockResolvedValue(mockResponse as any); + + const lokiAppConfig = { + orchestrator: { + workflowLogProvider: { + loki: { + baseUrl: 'http://localhost:3100', + logStreamSelectors: [ + { + label: 'custom-selector', + value: '=~".+"', + }, + { + label: 'custom-selector1', + value: '=~".+"', + }, + ], + }, + }, + }, + }; + + const lokiConfig = new ConfigReader(lokiAppConfig); + const provider = LokiProvider.fromConfig(lokiConfig); + const workflowInstance: ProcessInstanceDTO = { + id: '12345', + processId: '54321', + start: '2025-12-05T16:35:13.621Z', + end: '', + nodes: [], + }; + + const urlToFetch = + 'http://localhost:3100/loki/api/v1/query_range?query=%7Bcustom-selector%3D%7E%22.%2B%22%2Ccustom-selector1%3D%7E%22.%2B%22%7D+%7C%3D%2212345%22&start=2025-12-05T16%3A30%3A13.621Z&end=2026-01-03T16%3A35%3A13.621Z'; + + await provider.fetchWorkflowLogsByInstance(workflowInstance); + + const parsedURLToFetch = new URL(urlToFetch); + expect(fetch).toHaveBeenCalledWith(urlToFetch); + expect(parsedURLToFetch.origin).toEqual(provider.getBaseURL()); + expect(parsedURLToFetch.pathname).toEqual('/loki/api/v1/query_range'); + expect(parsedURLToFetch.searchParams.get('query')).toEqual( + `{custom-selector=~".+",custom-selector1=~".+"} |="${workflowInstance.id}"`, + ); + }); + + it('should have a custom log selector and filter, no label and no value, use defaults', async () => { + const mockResponse: Partial = { + ok: true, + status: 200, + json: jest.fn().mockResolvedValue(mockWorkflowLog), + }; + global.fetch = jest.fn().mockResolvedValue(mockResponse as any); + + const lokiAppConfig = { + orchestrator: { + workflowLogProvider: { + loki: { + baseUrl: 'http://localhost:3100', + logStreamSelectors: [ + { + value: '=~".+"', + }, + { + label: 'custom-selector1', + }, + ], + }, + }, + }, + }; + + const lokiConfig = new ConfigReader(lokiAppConfig); + const provider = LokiProvider.fromConfig(lokiConfig); + const workflowInstance: ProcessInstanceDTO = { + id: '12345', + processId: '54321', + start: '2025-12-05T16:35:13.621Z', + end: '', + nodes: [], + }; + + const urlToFetch = + 'http://localhost:3100/loki/api/v1/query_range?query=%7Bservice_name%3D%7E%22.%2B%22%2Ccustom-selector1%3D%7E%22.%2B%22%7D+%7C%3D%2212345%22&start=2025-12-05T16%3A30%3A13.621Z&end=2026-01-03T16%3A35%3A13.621Z'; + + await provider.fetchWorkflowLogsByInstance(workflowInstance); + const parsedURLToFetch = new URL(urlToFetch); + expect(fetch).toHaveBeenCalledWith(urlToFetch); + expect(parsedURLToFetch.origin).toEqual(provider.getBaseURL()); + expect(parsedURLToFetch.pathname).toEqual('/loki/api/v1/query_range'); + expect(parsedURLToFetch.searchParams.get('query')).toEqual( + `{service_name=~".+",custom-selector1=~".+"} |="${workflowInstance.id}"`, + ); + }); + }); +}); diff --git a/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/workflowLogsProviders/LokiProvider.ts b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/workflowLogsProviders/LokiProvider.ts new file mode 100644 index 0000000000..70f915bc1c --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend-module-loki/src/workflowLogsProviders/LokiProvider.ts @@ -0,0 +1,152 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { Config } from '@backstage/config'; +import { DateTime } from 'luxon'; +import { + ProcessInstanceDTO, + WorkflowLogsResponse, +} from '@red-hat-developer-hub/backstage-plugin-orchestrator-common'; +import { WorkflowLogProvider } from '@red-hat-developer-hub/backstage-plugin-orchestrator-node'; + +export class LokiProvider implements WorkflowLogProvider { + private readonly baseURL: string; + private readonly selectors: any; + private constructor(config: Config) { + this.baseURL = config.getString('baseUrl'); + this.selectors = config.getOptional('logStreamSelectors') || []; + } + getBaseURL(): string { + return this.baseURL; + } + + getProviderId() { + return 'loki'; + } + + getSelectors() { + return this.selectors; + } + + async fetchWorkflowLogsByInstance( + instance: ProcessInstanceDTO, + ): Promise { + // Because of timing issues, subtract 5 mintues from the start and add 5 minutes to the end + const startTime = DateTime.fromISO(instance.start as string, { + setZone: true, + }) + .minus({ minutes: 5 }) + .toISO(); + // Loki queries time range can't exceeds the limit (query length: 959h37m33.575s, limit: 30d1h) + // If there is no end date specified, then just add 29 days to the start date + // Assume that if there is an end date the range between start and end isn't more than 30 days + const endTime = instance.end + ? DateTime.fromISO(instance.end as string, { setZone: true }) + .plus({ minutes: 5 }) + .toISO() + : DateTime.fromISO(instance.start as string, { setZone: true }) + .plus({ days: 29 }) + .toISO(); + const lokiApiEndpoint = '/loki/api/v1/query_range'; + // Query is created with a log stream selector and then a log pipeline for more filtering + // format looks like this: {stream-selector=expression} | log pipeline/log filter expression + // The log stream selector part of the query here is getting all service names + // This might need to be configurable, based on https://grafana.com/docs/loki/latest/query/log_queries/#log-stream-selector + // Log pipeline part looks for the workflow instance id in those logs + // Create the streamSelector + let streamSelector: string = ''; + if (this.selectors.length < 1) { + streamSelector = 'service_name=~".+"'; + } else { + this.selectors.forEach( + ( + entry: { label: any; value: any }, + index: number, + arr: string | any[], + ) => { + // something about that last comma + streamSelector += `${entry.label || 'service_name'}${entry.value || '=~".+"'}${index !== arr.length - 1 ? ',' : ''}`; + }, + ); + } + const logPipelineFilter = `|="${instance.id}"`; + const params = new URLSearchParams({ + query: `{${streamSelector}} ${logPipelineFilter}`, + start: startTime as string, + end: endTime as string, + }); + + const urlToFetch = `${this.baseURL}${lokiApiEndpoint}?${params.toString()}`; + + let allResults; + try { + const response = await fetch(urlToFetch); + if (!response.ok) { + throw new Error(await response.text()); + } + + const jsonResponse = await response.json(); + + /** + Data should look like this + { + "instanceId": "efe0490f-6300-453b-bcb6-f47eb7efbb36", + "logs": [ + { + id: "1763129443414066000", + log: "2025-11-14 14:08:52,645 d5932f2cb566 INFO [org.kie.kogito.serverless.workflow.devservices.DevModeServerlessWorkflowLogger:40] (executor-thread-97) Starting workflow 'hello_world' (efe0490f-6300-453b-bcb6-f47eb7efbb36)" + }, + ... + ] + } + */ + // flatMap and map the results to an array like this: + /** + * { + * id: '123456', + * log: '2025-11-14 14:08:52,645 d5932f2cb566 INFO [org.kie.kogito.serverless.workflow.devservices.De....' + * } + */ + allResults = jsonResponse.data.result + .flatMap((val: any[]) => { + return val.values; + }) + .map((val: any[]) => { + return { + id: val[0], + log: val[1], + }; + }); + } catch (error) { + throw new Error(`Problem fetching loki logs: ${error.message}`); + } + + const workflowLogsResponse: WorkflowLogsResponse = { + instanceId: instance.id, + logs: allResults.sort((a: { id: number }, b: { id: number }) => { + return Number(a.id) - Number(b.id); + }), + }; + return workflowLogsResponse; + } + + static fromConfig(config: Config): LokiProvider { + const lokiConfig = config.getConfig( + 'orchestrator.workflowLogProvider.loki', + ); + return new LokiProvider(lokiConfig); + } +} diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/__fixtures__/mockProviders.ts b/workspaces/orchestrator/plugins/orchestrator-backend/__fixtures__/mockProviders.ts new file mode 100644 index 0000000000..8dcab88c2a --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend/__fixtures__/mockProviders.ts @@ -0,0 +1,49 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + ProcessInstanceDTO, + WorkflowLogsResponse, +} from '@red-hat-developer-hub/backstage-plugin-orchestrator-common'; +import { WorkflowLogProvider } from '@red-hat-developer-hub/backstage-plugin-orchestrator-node'; + +export class MockWorkflowLogProviders implements WorkflowLogProvider { + constructor( + protected providerId: string, + protected baseURL: string, + ) {} + getProviderId(): string { + return this.providerId; + } + getBaseURL(): string { + return this.baseURL; + } + fetchWorkflowLogsByInstance( + _workflowInstance: ProcessInstanceDTO, + ): Promise { + throw new Error('Method not implemented.'); + } +} + +export const lokiLogProvider = new MockWorkflowLogProviders( + 'loki', + 'https://loki', +); + +export const randomLogProviderThatDoesntExist = new MockWorkflowLogProviders( + 'random', + 'https://random', +); diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/package.json b/workspaces/orchestrator/plugins/orchestrator-backend/package.json index c1328b6468..fcf3a45221 100644 --- a/workspaces/orchestrator/plugins/orchestrator-backend/package.json +++ b/workspaces/orchestrator/plugins/orchestrator-backend/package.json @@ -13,7 +13,8 @@ "pluginPackages": [ "@red-hat-developer-hub/backstage-plugin-orchestrator", "@red-hat-developer-hub/backstage-plugin-orchestrator-backend", - "@red-hat-developer-hub/backstage-plugin-orchestrator-common" + "@red-hat-developer-hub/backstage-plugin-orchestrator-common", + "@red-hat-developer-hub/backstage-plugin-orchestrator-node" ] }, "exports": { @@ -74,6 +75,7 @@ "@backstage/plugin-scaffolder-backend": "^3.0.1", "@backstage/plugin-scaffolder-node": "^0.12.1", "@red-hat-developer-hub/backstage-plugin-orchestrator-common": "workspace:^", + "@red-hat-developer-hub/backstage-plugin-orchestrator-node": "workspace:^", "@urql/core": "^4.1.4", "ajv-formats": "^2.1.1", "cloudevents": "^8.0.0", diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/src/helpers/errorBuilder.ts b/workspaces/orchestrator/plugins/orchestrator-backend/src/helpers/errorBuilder.ts index fd48657d6e..c61660b7d3 100644 --- a/workspaces/orchestrator/plugins/orchestrator-backend/src/helpers/errorBuilder.ts +++ b/workspaces/orchestrator/plugins/orchestrator-backend/src/helpers/errorBuilder.ts @@ -1,5 +1,5 @@ /* - * Copyright 2024 The Backstage Authors + * Copyright Red Hat, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,6 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +export const NO_LOG_STORAGE_URL = 'NO_LOG_STORAGE_URL'; export const NO_DATA_INDEX_URL = 'NO_DATA_INDEX_URL'; export const NO_BACKEND_EXEC_CTX = 'NO_BACKEND_EXEC_CTX'; export const NO_CLIENT_PROVIDED = 'NO_CLIENT_PROVIDED'; @@ -26,6 +28,13 @@ export class ErrorBuilder { return e; } + public static GET_NO_LOG_STORAGE_URL_ERR(): Error { + return this.NewBackendError( + NO_LOG_STORAGE_URL, + 'No log storage url specified or found', + ); + } + public static GET_NO_DATA_INDEX_URL_ERR(): Error { return this.NewBackendError( NO_DATA_INDEX_URL, diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/src/index.ts b/workspaces/orchestrator/plugins/orchestrator-backend/src/index.ts index 70217b2016..4ca4f394cf 100644 --- a/workspaces/orchestrator/plugins/orchestrator-backend/src/index.ts +++ b/workspaces/orchestrator/plugins/orchestrator-backend/src/index.ts @@ -1,5 +1,5 @@ /* - * Copyright 2024 The Backstage Authors + * Copyright Red Hat, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,4 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { orchestratorPlugin as default } from './plugin'; diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/src/plugin.ts b/workspaces/orchestrator/plugins/orchestrator-backend/src/plugin.ts index bd67340ff7..3e9cd76cc6 100644 --- a/workspaces/orchestrator/plugins/orchestrator-backend/src/plugin.ts +++ b/workspaces/orchestrator/plugins/orchestrator-backend/src/plugin.ts @@ -20,6 +20,12 @@ import { } from '@backstage/backend-plugin-api'; import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha'; +import { + WorkflowLogProvider, + workflowLogsExtensionEndpoint, +} from '@red-hat-developer-hub/backstage-plugin-orchestrator-node'; + +import { WorkflowLogsProvidersRegistry } from './providers/WorkflowLogsProvidersRegistry'; import { createRouter } from './routerWrapper'; /** @@ -29,6 +35,17 @@ import { createRouter } from './routerWrapper'; export const orchestratorPlugin = createBackendPlugin({ pluginId: 'orchestrator', register(env) { + const workflowLogsProvidersRegistry = new WorkflowLogsProvidersRegistry(); + + env.registerExtensionPoint(workflowLogsExtensionEndpoint, { + addWorkflowLogProvider( + ...newWorkflowLogProviders: WorkflowLogProvider[] + ) { + newWorkflowLogProviders.forEach(workflowLogProvider => { + workflowLogsProvidersRegistry.register(workflowLogProvider); + }); + }, + }); env.registerInit({ deps: { logger: coreServices.logger, @@ -45,7 +62,10 @@ export const orchestratorPlugin = createBackendPlugin({ }, async init(props) { const { http } = props; - const router = await createRouter(props); + const router = await createRouter({ + ...props, + workflowLogsProvidersRegistry, + }); http.use(router); http.addAuthPolicy({ path: '/health', diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/src/providers/WorkflowLogsProviderRegistry.test.ts b/workspaces/orchestrator/plugins/orchestrator-backend/src/providers/WorkflowLogsProviderRegistry.test.ts new file mode 100644 index 0000000000..8229abe4fb --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend/src/providers/WorkflowLogsProviderRegistry.test.ts @@ -0,0 +1,97 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConflictError, NotFoundError } from '@backstage/errors'; + +import { + lokiLogProvider, + MockWorkflowLogProviders, + randomLogProviderThatDoesntExist, +} from '../../__fixtures__/mockProviders'; +import { WorkflowLogsProvidersRegistry } from './WorkflowLogsProvidersRegistry'; + +describe('WorkflowLogsProviderRegistry', () => { + let registry: WorkflowLogsProvidersRegistry; + + beforeEach(() => { + registry = new WorkflowLogsProvidersRegistry(); + }); + // listProviders + describe('register providers', () => { + it('should register log providers with different IDs successfully', () => { + expect(() => registry.register(lokiLogProvider)).not.toThrow(); + expect(() => + registry.register(randomLogProviderThatDoesntExist), + ).not.toThrow(); + expect(registry.listProviders()).toEqual([ + { + providerId: 'loki', + baseURL: 'https://loki', + }, + { + providerId: 'random', + baseURL: 'https://random', + }, + ]); + }); + + it('should throw a ConflictError when registring providers with duplicate names', () => { + const provider1 = new MockWorkflowLogProviders('loki', 'url'); + const provider2 = new MockWorkflowLogProviders('loki', 'url'); + + registry.register(provider1); + expect(() => registry.register(provider2)).toThrow( + new ConflictError( + 'Workflow Log Provider with ID loki has already been registered', + ), + ); + }); + }); + + describe('getProvider', () => { + it('should return provider for registered provider', () => { + registry.register(lokiLogProvider); + const provider = registry.getProvider('loki'); + expect(provider).toEqual(lokiLogProvider); + }); + + it('should throw NotFoundError for unregistered provider', () => { + expect(() => registry.getProvider('nope')).toThrow( + new NotFoundError( + "Workflow Log Provider with ID 'nope' is not registered", + ), + ); + }); + }); + + describe('listProviders', () => { + it('should return an empty array when no providers are registered', () => { + const providers = registry.listProviders(); + expect(providers).toEqual([]); + }); + + it('should return all registered providers', () => { + registry.register(lokiLogProvider); + registry.register(randomLogProviderThatDoesntExist); + + const providers = registry.listProviders(); + + expect(providers).toHaveLength(2); + expect(providers).toContain(lokiLogProvider); + expect(providers).toContain(randomLogProviderThatDoesntExist); + }); + }); +}); diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/src/providers/WorkflowLogsProvidersRegistry.ts b/workspaces/orchestrator/plugins/orchestrator-backend/src/providers/WorkflowLogsProvidersRegistry.ts new file mode 100644 index 0000000000..7eaddd825e --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-backend/src/providers/WorkflowLogsProvidersRegistry.ts @@ -0,0 +1,49 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ConflictError, NotFoundError } from '@backstage/errors'; + +import { WorkflowLogProvider } from '@red-hat-developer-hub/backstage-plugin-orchestrator-node'; + +export class WorkflowLogsProvidersRegistry { + private readonly workfLogsProviders = new Map(); + + register(workflowLogProvider: WorkflowLogProvider): void { + const providerId = workflowLogProvider.getProviderId(); + + if (this.workfLogsProviders.has(providerId)) { + throw new ConflictError( + `Workflow Log Provider with ID ${providerId} has already been registered`, + ); + } + + this.workfLogsProviders.set(providerId, workflowLogProvider); + } + + listProviders(): WorkflowLogProvider[] { + return Array.from(this.workfLogsProviders.values()); + } + + getProvider(providerId: string): WorkflowLogProvider | undefined { + const provider = this.workfLogsProviders.get(providerId); + if (!provider) { + throw new NotFoundError( + `Workflow Log Provider with ID '${providerId}' is not registered`, + ); + } + return this.workfLogsProviders.get(providerId); + } +} diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/src/routerWrapper/index.ts b/workspaces/orchestrator/plugins/orchestrator-backend/src/routerWrapper/index.ts index bf040c9adf..c30589a919 100644 --- a/workspaces/orchestrator/plugins/orchestrator-backend/src/routerWrapper/index.ts +++ b/workspaces/orchestrator/plugins/orchestrator-backend/src/routerWrapper/index.ts @@ -29,6 +29,7 @@ import type { Config } from '@backstage/config'; import express from 'express'; +import { WorkflowLogsProvidersRegistry } from '../providers/WorkflowLogsProvidersRegistry'; import { DevModeService } from '../service/DevModeService'; import { createBackendRouter } from '../service/router'; @@ -43,6 +44,7 @@ export interface RouterOptions { permissions: PermissionsService; httpAuth: HttpAuthService; userInfo: UserInfoService; + workflowLogsProvidersRegistry: WorkflowLogsProvidersRegistry; } export async function createRouter( @@ -74,5 +76,6 @@ export async function createRouter( permissions: args.permissions, httpAuth: args.httpAuth, userInfo: args.userInfo, + workflowLogsProvidersRegistry: args.workflowLogsProvidersRegistry, }); } diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/src/service/OrchestratorService.ts b/workspaces/orchestrator/plugins/orchestrator-backend/src/service/OrchestratorService.ts index 714112149e..86b7edba19 100644 --- a/workspaces/orchestrator/plugins/orchestrator-backend/src/service/OrchestratorService.ts +++ b/workspaces/orchestrator/plugins/orchestrator-backend/src/service/OrchestratorService.ts @@ -18,12 +18,15 @@ import { AuthToken, Filter, ProcessInstance, + ProcessInstanceDTO, ProcessInstanceVariables, WorkflowDefinition, WorkflowExecutionResponse, WorkflowInfo, + WorkflowLogsResponse, WorkflowOverview, } from '@red-hat-developer-hub/backstage-plugin-orchestrator-common'; +import { WorkflowLogProvider } from '@red-hat-developer-hub/backstage-plugin-orchestrator-node'; import { Pagination } from '../types/pagination'; import { DataIndexService } from './DataIndexService'; @@ -35,6 +38,7 @@ export class OrchestratorService { private readonly sonataFlowService: SonataFlowService, private readonly dataIndexService: DataIndexService, private readonly workflowCacheService: WorkflowCacheService, + private readonly workflowLogProvider?: WorkflowLogProvider, ) {} // Data Index Service Wrapper @@ -171,6 +175,21 @@ export class OrchestratorService { return overview; } + public async fetchWorkflowLogsByInstance(args: { + instance: ProcessInstanceDTO; + }): Promise { + return this.workflowLogProvider?.fetchWorkflowLogsByInstance( + args.instance, + ) as WorkflowLogsResponse; + } + + public hasLogProvider(): boolean { + if (this.workflowLogProvider) { + return true; + } + return false; + } + public async pingWorkflowService(args: { definitionId: string; serviceUrl: string; diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/v2.test.ts b/workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/v2.test.ts index fcb2e4b67a..8657517137 100644 --- a/workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/v2.test.ts +++ b/workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/v2.test.ts @@ -23,6 +23,7 @@ import { ProcessInstanceListResultDTO, SearchRequest, toWorkflowYaml, + WorkflowLogsResponse, WorkflowOverview, WorkflowOverviewDTO, WorkflowOverviewListResultDTO, @@ -57,6 +58,7 @@ const createMockOrchestratorService = (): OrchestratorService => { {} as any, // Mock sonataFlowService {} as any, // Mock dataIndexService {} as any, // Mock workflowCacheService + {} as any, // Mock WorkflowProvider ); mockOrchestratorService.fetchWorkflowOverviews = jest.fn(); @@ -69,6 +71,7 @@ const createMockOrchestratorService = (): OrchestratorService => { mockOrchestratorService.executeWorkflow = jest.fn(); mockOrchestratorService.abortWorkflowInstance = jest.fn(); mockOrchestratorService.pingWorkflowService = jest.fn(); + mockOrchestratorService.fetchWorkflowLogsByInstance = jest.fn(); return mockOrchestratorService; }; @@ -549,3 +552,38 @@ describe('abortWorkflow', () => { await expect(promise).rejects.toThrow('Simulated abort workflow error'); }); }); + +describe('getInstanceLogsByInstance', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('Has logs', async () => { + // Create the process instance for the log? + // Probably need a generate log or something + const processInstance = generateProcessInstance(1); + const mockedLog = { + instanceId: '123456', + logs: [ + '2025-11-14 14:08:52,645 d5932f2cb566 INFO [org.kie.kogito.serverless.workflow.devservices.De....', + ], + }; + + // Mock return value + ( + mockOrchestratorService.fetchWorkflowLogsByInstance as jest.Mock + ).mockResolvedValue(mockedLog); + + // Act - call the function to get the logs + const instanceLogs: WorkflowLogsResponse = + await v2.getInstanceLogsByInstance(processInstance); + + // Assert + expect( + mockOrchestratorService.fetchWorkflowLogsByInstance, + ).toHaveBeenCalledTimes(1); + expect(instanceLogs).toBeDefined(); + expect(instanceLogs.instanceId).toEqual('123456'); + expect(instanceLogs.logs.length).toEqual(1); + }); +}); diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/v2.ts b/workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/v2.ts index 9793cf76ee..7738d8d95c 100644 --- a/workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/v2.ts +++ b/workspaces/orchestrator/plugins/orchestrator-backend/src/service/api/v2.ts @@ -27,6 +27,7 @@ import { RetriggerInstanceRequestDTO, WorkflowDTO, WorkflowInfo, + WorkflowLogsResponse, WorkflowOverviewDTO, WorkflowOverviewListResultDTO, WorkflowRunStatusDTO, @@ -180,6 +181,15 @@ export class V2 { return mapToProcessInstanceDTO(instance); } + public async getInstanceLogsByInstance( + instance: ProcessInstanceDTO, + ): Promise { + const logs = await this.orchestratorService.fetchWorkflowLogsByInstance({ + instance, + }); + return logs; + } + public async executeWorkflow( executeWorkflowRequestDTO: ExecuteWorkflowRequestDTO, workflowId: string, diff --git a/workspaces/orchestrator/plugins/orchestrator-backend/src/service/router.ts b/workspaces/orchestrator/plugins/orchestrator-backend/src/service/router.ts index eac669444e..c843f9856c 100644 --- a/workspaces/orchestrator/plugins/orchestrator-backend/src/service/router.ts +++ b/workspaces/orchestrator/plugins/orchestrator-backend/src/service/router.ts @@ -54,6 +54,7 @@ import { WorkflowOverviewListResultDTO, } from '@red-hat-developer-hub/backstage-plugin-orchestrator-common'; +import { WorkflowLogsProvidersRegistry } from '../providers/WorkflowLogsProvidersRegistry'; import { RouterOptions } from '../routerWrapper'; import { buildPagination } from '../types/pagination'; import { V2 } from './api/v2'; @@ -184,8 +185,14 @@ export async function createBackendRouter( permissions, httpAuth, userInfo, + workflowLogsProvidersRegistry, } = options; - const publicServices = initPublicServices(logger, config, scheduler); + const publicServices = initPublicServices( + logger, + config, + scheduler, + workflowLogsProvidersRegistry, + ); const routerApi = await initRouterApi(publicServices.orchestratorService); @@ -248,6 +255,7 @@ function initPublicServices( logger: LoggerService, config: Config, scheduler: SchedulerService, + workflowLogsProvidersRegistry: WorkflowLogsProvidersRegistry, ): PublicServices { const dataIndexUrl = config.getString('orchestrator.dataIndexService.url'); const dataIndexService = new DataIndexService(dataIndexUrl, logger); @@ -260,10 +268,19 @@ function initPublicServices( ); workflowCacheService.schedule({ scheduler: scheduler }); + const isWorkflowLogProviderAdded = config.getOptional( + 'orchestrator.workflowLogProvider', + ); + let workflowLogProvider; + if (isWorkflowLogProviderAdded) { + workflowLogProvider = workflowLogsProvidersRegistry.getProvider('loki'); + } + const orchestratorService = new OrchestratorService( sonataFlowService, dataIndexService, workflowCacheService, + workflowLogProvider, ); const dataInputSchemaService = new DataInputSchemaService(); @@ -944,6 +961,76 @@ function setupInternalRoutes( }, ); + // v2 + routerApi.openApiBackend.register( + 'getWorkflowLogById', + async (c, request: express.Request, res: express.Response, next) => { + const instanceId = c.request.params.instanceId as string; + // will probably have to get the raw log at some point + // const rawLog = c.request.query.instanceId as Boolean; + + const auditEvent = await auditor.createEvent({ + eventId: 'get-logs-by-instance', + request, + meta: { + actionType: 'by-id', + instanceId, + }, + }); + + try { + // Check that a log provider has been setup + if (!services.orchestratorService.hasLogProvider()) { + throw new Error(`No log provider setup`); + } + const instance = await routerApi.v2.getInstanceById(instanceId); + const workflowId = instance.processId; + + const decision = await authorize( + request, + [ + orchestratorWorkflowPermission, + orchestratorWorkflowSpecificPermission(workflowId), + ], + permissions, + httpAuth, + ); + if (decision.result === AuthorizeResult.DENY) { + manageDenyAuthorization(auditEvent); + } + + const credentials = await httpAuth.credentials(request); + const initiatorEntity = (await userInfo.getUserInfo(credentials)) + .userEntityRef; + // Check if user is authorized to view all instances + const isUserAuthorizedForInstanceAdminView = + await isUserAuthorizedForInstanceAdminViewPermission( + request, + permissions, + httpAuth, + ); + + // If not an admin, enforce initiatorEntity check + if (!isUserAuthorizedForInstanceAdminView) { + const instanceInitiatorEntity = instance.initiatorEntity; + if (instanceInitiatorEntity !== initiatorEntity) { + throw new Error( + `Unauthorized to access instance ${instanceId} not initiated by user.`, + ); + } + } + + const logs = await routerApi.v2.getInstanceLogsByInstance(instance); + + auditEvent.success(); + res.status(200).json(logs); + } catch (error) { + auditEvent.fail({ error }); + next(error); + } + }, + ); + // v2 routerApi.openApiBackend.register( 'abortWorkflow', diff --git a/workspaces/orchestrator/plugins/orchestrator-common/package.json b/workspaces/orchestrator/plugins/orchestrator-common/package.json index 167f15f695..c57a396ca8 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/package.json +++ b/workspaces/orchestrator/plugins/orchestrator-common/package.json @@ -16,7 +16,8 @@ "pluginPackages": [ "@red-hat-developer-hub/backstage-plugin-orchestrator", "@red-hat-developer-hub/backstage-plugin-orchestrator-backend", - "@red-hat-developer-hub/backstage-plugin-orchestrator-common" + "@red-hat-developer-hub/backstage-plugin-orchestrator-common", + "@red-hat-developer-hub/backstage-plugin-orchestrator-node" ] }, "homepage": "https://red.ht/rhdh", diff --git a/workspaces/orchestrator/plugins/orchestrator-common/report.api.md b/workspaces/orchestrator/plugins/orchestrator-common/report.api.md index 4b2205cb81..5129f65819 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/report.api.md +++ b/workspaces/orchestrator/plugins/orchestrator-common/report.api.md @@ -236,6 +236,18 @@ export class DefaultApi extends BaseAPI { // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen // Warning: (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' + // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen + // Warning: (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. + // Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' + // Warning: (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag + // Warning: (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" + // Warning: (tsdoc-undefined-tag) The TSDoc tag "@memberof" is not defined in this configuration + getWorkflowLogById(instanceId: string, rawlog?: boolean, options?: RawAxiosRequestConfig): Promise>; + // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen + // Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' + // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen + // Warning: (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. + // Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // Warning: (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag // Warning: (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" // Warning: (tsdoc-undefined-tag) The TSDoc tag "@memberof" is not defined in this configuration @@ -313,6 +325,7 @@ export const DefaultApiAxiosParamCreator: (configuration?: Configuration) => { getInstances: (searchRequest?: SearchRequest, options?: RawAxiosRequestConfig) => Promise; getWorkflowInputSchemaById: (workflowId: string, instanceId?: string, options?: RawAxiosRequestConfig) => Promise; getWorkflowInstances: (workflowId: string, searchRequest?: SearchRequest, options?: RawAxiosRequestConfig) => Promise; + getWorkflowLogById: (instanceId: string, rawlog?: boolean, options?: RawAxiosRequestConfig) => Promise; getWorkflowOverviewById: (workflowId: string, options?: RawAxiosRequestConfig) => Promise; getWorkflowSourceById: (workflowId: string, options?: RawAxiosRequestConfig) => Promise; getWorkflowStatuses: (options?: RawAxiosRequestConfig) => Promise; @@ -333,6 +346,7 @@ export const DefaultApiFactory: (configuration?: Configuration, basePath?: strin getInstances(searchRequest?: SearchRequest, options?: any): AxiosPromise; getWorkflowInputSchemaById(workflowId: string, instanceId?: string, options?: any): AxiosPromise; getWorkflowInstances(workflowId: string, searchRequest?: SearchRequest, options?: any): AxiosPromise; + getWorkflowLogById(instanceId: string, rawlog?: boolean, options?: any): AxiosPromise; getWorkflowOverviewById(workflowId: string, options?: any): AxiosPromise; getWorkflowSourceById(workflowId: string, options?: any): AxiosPromise; getWorkflowStatuses(options?: any): AxiosPromise>; @@ -353,6 +367,7 @@ export const DefaultApiFp: (configuration?: Configuration) => { getInstances(searchRequest?: SearchRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>; getWorkflowInputSchemaById(workflowId: string, instanceId?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>; getWorkflowInstances(workflowId: string, searchRequest?: SearchRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>; + getWorkflowLogById(instanceId: string, rawlog?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>; getWorkflowOverviewById(workflowId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>; getWorkflowSourceById(workflowId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>; getWorkflowStatuses(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>>; @@ -1386,6 +1401,24 @@ export interface WorkflowLogEntry { log: string; } +// Warning: (tsdoc-undefined-tag) The TSDoc tag "@export" is not defined in this configuration +// Warning: (tsdoc-undefined-tag) The TSDoc tag "@interface" is not defined in this configuration +// Warning: (ae-missing-release-tag) "WorkflowLogsResponse" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface WorkflowLogsResponse { + // Warning: (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag + // Warning: (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" + // Warning: (tsdoc-undefined-tag) The TSDoc tag "@type" is not defined in this configuration + // Warning: (tsdoc-undefined-tag) The TSDoc tag "@memberof" is not defined in this configuration + 'instanceId'?: string; + // Warning: (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag + // Warning: (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" + // Warning: (tsdoc-undefined-tag) The TSDoc tag "@type" is not defined in this configuration + // Warning: (tsdoc-undefined-tag) The TSDoc tag "@memberof" is not defined in this configuration + 'logs'?: any; +} + // Warning: (ae-missing-release-tag) "WorkflowOverview" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -1662,206 +1695,190 @@ export interface WorkflowRunStatusDTO { // src/generated/client/api.d.ts:335:1 - (ae-undocumented) Missing documentation for "PaginationInfoDTOOrderDirectionEnum". // src/generated/client/api.d.ts:496:1 - (ae-undocumented) Missing documentation for "ProcessInstanceStatusDTO". // src/generated/client/api.d.ts:588:1 - (ae-undocumented) Missing documentation for "WorkflowFormatDTO". -// src/generated/client/api.d.ts:818:22 - (ae-undocumented) Missing documentation for "WorkflowResultDTOOutputsInnerFormatEnum". -// src/generated/client/api.d.ts:824:1 - (ae-undocumented) Missing documentation for "WorkflowResultDTOOutputsInnerFormatEnum". -// src/generated/client/api.d.ts:858:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:859:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:859:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:860:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:860:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:860:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:861:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:861:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:863:5 - (ae-forgotten-export) The symbol "RequestArgs" needs to be exported by the entry point index.d.ts -// src/generated/client/api.d.ts:866:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:867:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:867:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:868:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:868:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:869:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:869:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:869:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:870:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:870:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:875:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:876:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:876:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:877:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:877:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:877:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:878:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:878:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:883:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:884:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:884:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:884:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:885:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:885:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:885:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:886:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:886:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:891:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:891:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:892:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:892:24 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:892:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:893:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:893:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:893:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:894:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:894:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:899:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:900:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:900:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:901:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:901:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:901:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:902:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:902:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:902:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:903:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:903:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:908:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:908:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:909:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:909:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:909:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:910:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:910:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:915:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:915:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:916:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:916:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:916:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:917:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:917:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:922:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:923:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:923:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:923:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:924:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:924:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:837:22 - (ae-undocumented) Missing documentation for "WorkflowResultDTOOutputsInnerFormatEnum". +// src/generated/client/api.d.ts:843:1 - (ae-undocumented) Missing documentation for "WorkflowResultDTOOutputsInnerFormatEnum". +// src/generated/client/api.d.ts:877:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:878:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:878:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:879:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:879:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:879:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:880:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:880:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:882:5 - (ae-forgotten-export) The symbol "RequestArgs" needs to be exported by the entry point index.d.ts +// src/generated/client/api.d.ts:885:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:886:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:886:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:887:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:887:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:888:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:888:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:888:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:889:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:889:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:894:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:895:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:895:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:896:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:896:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:896:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:897:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:897:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:902:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:903:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:903:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:903:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:904:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:904:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:904:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:905:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:905:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:910:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:910:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:911:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:911:24 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:911:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:912:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:912:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:912:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:913:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:913:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:918:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:919:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:919:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:920:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:920:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:920:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:921:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:921:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:921:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:922:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:922:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:927:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:927:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:928:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:928:25 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:928:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:929:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:929:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:929:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // src/generated/client/api.d.ts:929:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:930:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:930:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:930:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:931:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:931:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:930:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:930:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:935:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:935:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:936:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:936:54 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:936:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // src/generated/client/api.d.ts:936:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:937:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:937:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:937:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:938:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:938:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:937:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:937:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:942:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:942:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:943:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:943:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // src/generated/client/api.d.ts:943:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:944:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:944:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:944:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:945:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:945:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:950:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:951:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:951:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:952:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:952:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:953:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:953:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:954:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:954:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:954:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:955:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:955:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:966:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:967:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:967:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:968:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:968:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:968:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:969:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:969:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:974:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:975:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:975:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:976:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:976:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:977:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:977:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:977:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:978:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:978:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:983:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:984:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:984:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:985:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:985:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:985:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:986:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:986:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:991:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:992:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:992:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:992:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:993:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:993:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:993:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:994:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:994:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:999:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:999:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1000:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1000:24 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1000:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1001:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1001:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1001:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1002:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1002:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1007:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:1008:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1008:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1009:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1009:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1009:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1010:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1010:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1010:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1011:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1011:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1016:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1016:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1017:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1017:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1017:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1018:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1018:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1023:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1023:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1024:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1024:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1024:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1025:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1025:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1030:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:1031:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1031:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1031:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1032:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1032:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:944:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:944:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:949:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:950:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:950:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:950:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:951:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:951:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:956:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:956:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:956:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:957:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:957:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:957:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:958:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:958:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:963:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:963:54 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:963:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:964:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:964:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:964:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:965:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:965:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:970:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:970:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:971:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:971:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:971:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:972:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:972:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:977:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:978:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:978:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:979:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:979:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:980:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:980:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:981:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:981:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:981:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:982:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:982:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:993:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:994:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:994:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:995:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:995:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:995:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:996:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:996:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1001:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1002:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1002:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1003:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1003:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1004:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1004:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1004:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1005:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1005:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1010:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1011:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1011:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1012:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1012:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1012:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1013:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1013:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1018:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1019:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1019:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1019:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1020:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1020:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1020:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1021:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1021:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1026:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1026:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1027:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1027:24 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1027:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1028:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1028:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1028:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1029:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1029:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1034:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1035:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1035:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1036:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1036:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1036:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:1037:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1037:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1037:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // src/generated/client/api.d.ts:1037:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1038:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1038:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1038:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1039:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1039:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1038:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1038:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1043:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1043:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:1044:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1044:54 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1044:25 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // src/generated/client/api.d.ts:1044:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:1045:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen // src/generated/client/api.d.ts:1045:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. @@ -1875,104 +1892,104 @@ export interface WorkflowRunStatusDTO { // src/generated/client/api.d.ts:1052:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:1053:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag // src/generated/client/api.d.ts:1053:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1058:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1058:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1058:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:1059:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1059:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // src/generated/client/api.d.ts:1059:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1060:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1060:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1061:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1061:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1062:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1062:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1062:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1063:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1063:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1074:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:1075:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1075:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1076:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1076:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1076:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1077:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1077:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1082:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:1083:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1083:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1084:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1084:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1085:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1085:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1085:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1086:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1086:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1091:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:1092:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1092:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1093:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1093:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1093:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1094:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1094:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1099:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:1100:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1100:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1100:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1101:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1101:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1101:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1102:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1102:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1107:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1107:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1108:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1108:24 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1108:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1109:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1109:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1109:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1110:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1110:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1115:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:1116:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1116:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1117:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1117:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1117:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1060:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1060:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1065:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1066:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1066:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1066:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1067:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1067:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1072:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1072:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1072:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1073:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1073:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1073:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1074:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1074:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1079:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1079:54 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1079:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1080:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1080:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1080:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1081:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1081:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1086:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1086:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1087:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1087:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1087:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1088:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1088:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1093:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1094:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1094:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1095:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1095:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1096:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1096:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1097:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1097:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1097:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1098:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1098:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1109:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1110:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1110:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1111:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1111:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1111:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1112:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1112:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1117:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration // src/generated/client/api.d.ts:1118:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1118:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // src/generated/client/api.d.ts:1118:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1119:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1119:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1124:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1124:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1125:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1125:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1125:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1126:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1126:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1131:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1131:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1132:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1132:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1132:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1133:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1133:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1138:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration -// src/generated/client/api.d.ts:1139:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1139:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1139:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1140:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1140:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1145:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1145:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1145:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1146:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1146:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1146:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1147:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1147:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1119:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1119:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1120:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1120:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1120:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1121:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1121:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1126:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1127:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1127:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1128:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1128:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1128:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1129:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1129:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1134:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1135:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1135:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1135:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1136:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1136:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1136:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1137:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1137:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1142:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1142:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1143:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1143:24 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1143:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1144:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1144:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1144:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1145:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1145:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1150:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1151:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1151:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:1152:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1152:54 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1152:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // src/generated/client/api.d.ts:1152:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:1153:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen // src/generated/client/api.d.ts:1153:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. @@ -1982,22 +1999,68 @@ export interface WorkflowRunStatusDTO { // src/generated/client/api.d.ts:1159:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen // src/generated/client/api.d.ts:1159:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:1160:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1160:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1160:25 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // src/generated/client/api.d.ts:1160:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1161:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1161:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" -// src/generated/client/api.d.ts:1166:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1161:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1161:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1161:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1162:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1162:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" // src/generated/client/api.d.ts:1167:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen // src/generated/client/api.d.ts:1167:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' // src/generated/client/api.d.ts:1168:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1168:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. // src/generated/client/api.d.ts:1168:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1169:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1169:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1170:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen -// src/generated/client/api.d.ts:1170:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. -// src/generated/client/api.d.ts:1170:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' -// src/generated/client/api.d.ts:1171:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag -// src/generated/client/api.d.ts:1171:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1169:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1169:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1174:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1174:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1175:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1175:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1175:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1176:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1176:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1181:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1182:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1182:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1182:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1183:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1183:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1188:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1188:31 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1188:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1189:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1189:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1189:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1190:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1190:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1195:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1195:54 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1195:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1196:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1196:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1196:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1197:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1197:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1202:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1202:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1203:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1203:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1203:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1204:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1204:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" +// src/generated/client/api.d.ts:1209:8 - (tsdoc-undefined-tag) The TSDoc tag "@summary" is not defined in this configuration +// src/generated/client/api.d.ts:1210:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1210:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1211:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1211:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1212:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1212:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1213:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen +// src/generated/client/api.d.ts:1213:19 - (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets. +// src/generated/client/api.d.ts:1213:15 - (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}' +// src/generated/client/api.d.ts:1214:30 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag +// src/generated/client/api.d.ts:1214:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@" // src/generated/client/base.d.ts:27:4 - (tsdoc-undefined-tag) The TSDoc tag "@export" is not defined in this configuration // src/generated/client/base.d.ts:28:4 - (tsdoc-undefined-tag) The TSDoc tag "@interface" is not defined in this configuration // src/generated/client/base.d.ts:36:4 - (tsdoc-undefined-tag) The TSDoc tag "@export" is not defined in this configuration diff --git a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/.METADATA.sha1 b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/.METADATA.sha1 index c362b953f6..c7e1ca2c41 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/.METADATA.sha1 +++ b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/.METADATA.sha1 @@ -1 +1 @@ -512ca47fa107a0c403499906d014ca4269f4d1c1 +29ca3997832aabcbc991d7ee209a2201c100b234 diff --git a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/api/definition.ts b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/api/definition.ts index cd5a5050cd..ac97ddc863 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/api/definition.ts +++ b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/api/definition.ts @@ -1,5 +1,5 @@ /* eslint-disable */ /* prettier-ignore */ // GENERATED FILE DO NOT EDIT. -const OPENAPI = `{"openapi":"3.1.0","info":{"title":"Orchestratorplugin","description":"APItointeractwithorchestratorplugin","license":{"name":"Apache2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"},"version":"0.0.1"},"servers":[{"url":"/"}],"paths":{"/v2/workflows/overview":{"post":{"operationId":"getWorkflowsOverview","description":"Returnsthekeyfieldsoftheworkflowincludingdataonthelastruninstance","requestBody":{"required":false,"description":"Paginationandfilters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowOverviewListResultDTO"}}}},"500":{"description":"Errorfetchingworkflowoverviews","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/overview/entity":{"post":{"operationId":"getWorkflowsOverviewForEntity","description":"Returnsthekeyfieldsoftheworkflowincludingdataonthelastruninstance","requestBody":{"required":false,"description":"Targetentityreferenceandannotationworkflowids","content":{"application/json":{"schema":{"type":"object","properties":{"targetEntity":{"type":"string"},"annotationWorkflowIds":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowOverviewListResultDTO"}}}},"500":{"description":"Errorfetchingworkflowoverviewsforentity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/overview":{"get":{"operationId":"getWorkflowOverviewById","description":"Returnsthekeyfieldsoftheworkflowincludingdataonthelastruninstance","parameters":[{"name":"workflowId","in":"path","required":true,"description":"Uniqueidentifieroftheworkflow","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowOverviewDTO"}}}},"500":{"description":"Errorfetchingworkflowoverview","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/source":{"get":{"operationId":"getWorkflowSourceById","description":"Gettheworkflow'sdefinition","parameters":[{"name":"workflowId","in":"path","description":"IDoftheworkflowtofetch","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"text/plain":{"schema":{"type":"string"}}}},"500":{"description":"Errorfetchingworkflowsourcebyid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/inputSchema":{"get":{"operationId":"getWorkflowInputSchemaById","description":"Gettheworkflowinputschema.Itdefinestheinputfieldsoftheworkflow","parameters":[{"name":"workflowId","in":"path","description":"IDoftheworkflowtofetch","required":true,"schema":{"type":"string"}},{"name":"instanceId","in":"query","description":"IDofinstance","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputSchemaResponseDTO"}}}},"500":{"description":"Errorfetchingworkflowinputschemabyid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/pingWorkflowService":{"get":{"operationId":"pingWorkflowServiceById","description":"ReturnstrueiftheworkflowserviceisupforthegivenworkflowID.","parameters":[{"name":"workflowId","in":"path","description":"IDoftheworkflowtofetch","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"boolean"}}}},"500":{"description":"Errorpingingworkflowservicebyid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/instances":{"post":{"operationId":"getInstances","summary":"Getinstances","description":"Retrieveanarrayofworkflowexecutions(instances)","requestBody":{"required":false,"description":"Parametersforretrievinginstances","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessInstanceListResultDTO"}}}},"500":{"description":"Errorfetchinginstances","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/instances":{"post":{"operationId":"getWorkflowInstances","summary":"Getinstancesforaspecificworkflow","description":"Retrieveanarrayofworkflowexecutions(instances)forthegivenworkflow","parameters":[{"name":"workflowId","in":"path","required":true,"description":"IDoftheworkflow","schema":{"type":"string"}}],"requestBody":{"required":false,"description":"Parametersforretrievingworkflowinstances","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessInstanceListResultDTO"}}}},"500":{"description":"Errorfetchinginstances","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/instances/{instanceId}":{"get":{"summary":"GetWorkflowInstancebyID","description":"Getaworkflowexecution/run(instance)","operationId":"getInstanceById","parameters":[{"name":"instanceId","in":"path","required":true,"description":"IDoftheworkflowinstance","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfulresponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessInstanceDTO"}}}},"500":{"description":"Errorfetchinginstance","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/instances/statuses":{"get":{"operationId":"getWorkflowStatuses","summary":"Getworkflowstatuslist","description":"Retrievearraywiththestatusofallinstances","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowRunStatusDTO"}}}}},"500":{"description":"Errorfetchingworkflowstatuses","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/execute":{"post":{"summary":"Executeaworkflow","description":"Executeaworkflow","operationId":"executeWorkflow","parameters":[{"name":"workflowId","in":"path","description":"IDoftheworkflowtoexecute","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteWorkflowRequestDTO"}}}},"responses":{"200":{"description":"Successfulexecution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteWorkflowResponseDTO"}}}},"500":{"description":"InternalServerError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/{instanceId}/retrigger":{"post":{"summary":"Retriggeraninstance","description":"Retriggeraninstance","operationId":"retriggerInstance","parameters":[{"name":"workflowId","in":"path","description":"IDoftheworkflow","required":true,"schema":{"type":"string"}},{"name":"instanceId","in":"path","description":"IDoftheinstancetoretrigger","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetriggerInstanceRequestDTO"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"InternalServerError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/instances/{instanceId}/abort":{"delete":{"summary":"Abortaworkflowinstance","operationId":"abortWorkflow","description":"AbortsaworkflowinstanceidentifiedbytheprovidedinstanceId.","parameters":[{"name":"instanceId","in":"path","required":true,"description":"Theidentifieroftheworkflowinstancetoabort.","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfuloperation","content":{"text/plain":{"schema":{"type":"string"}}}},"500":{"description":"Errorabortingworkflow","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"ErrorResponse":{"description":"TheErrorResponseobjectrepresentsacommonstructureforhandlingerrorsinAPIresponses.Itincludesessentialinformationabouttheerror,suchastheerrormessageandadditionaloptionaldetails.","type":"object","properties":{"message":{"description":"Astringprovidingaconciseandhuman-readabledescriptionoftheencounterederror.ThisfieldisrequiredintheErrorResponseobject.","type":"string","default":"internalservererror"},"additionalInfo":{"description":"Anoptionalfieldthatcancontainadditionalinformationorcontextabouttheerror.Itprovidesflexibilityforincludingextradetailsbasedonspecificerrorscenarios.","type":"string"}},"required":["message"]},"GetOverviewsRequestParams":{"type":"object","properties":{"paginationInfo":{"$ref":"#/components/schemas/PaginationInfoDTO"},"filters":{"$ref":"#/components/schemas/SearchRequest"}}},"WorkflowOverviewListResultDTO":{"type":"object","properties":{"overviews":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowOverviewDTO"},"minItems":0},"paginationInfo":{"$ref":"#/components/schemas/PaginationInfoDTO"}}},"WorkflowOverviewDTO":{"type":"object","properties":{"workflowId":{"type":"string","description":"Workflowuniqueidentifier","minLength":1},"name":{"type":"string","description":"Workflowname","minLength":1},"format":{"$ref":"#/components/schemas/WorkflowFormatDTO"},"lastRunId":{"type":"string"},"lastTriggeredMs":{"type":"number","minimum":0},"lastRunStatus":{"$ref":"#/components/schemas/ProcessInstanceStatusDTO"},"description":{"type":"string"},"isAvailable":{"type":"boolean"}},"required":["workflowId","format"]},"PaginationInfoDTO":{"type":"object","properties":{"pageSize":{"type":"number"},"offset":{"type":"number"},"orderDirection":{"enum":["ASC","DESC"]},"orderBy":{"type":"string"}},"additionalProperties":false},"WorkflowFormatDTO":{"type":"string","description":"Formatoftheworkflowdefinition","enum":["yaml","json"]},"WorkflowListResultDTO":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowDTO"}},"paginationInfo":{"$ref":"#/components/schemas/PaginationInfoDTO"}},"required":["items","paginationInfo"]},"WorkflowDTO":{"type":"object","properties":{"id":{"type":"string","description":"Workflowuniqueidentifier","minLength":1},"name":{"type":"string","description":"Workflowname","minLength":1},"format":{"$ref":"#/components/schemas/WorkflowFormatDTO"},"description":{"type":"string","description":"Descriptionoftheworkflow"},"annotations":{"type":"array","items":{"type":"string"}}},"required":["id","format"]},"ProcessInstanceListResultDTO":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProcessInstanceDTO"}},"paginationInfo":{"$ref":"#/components/schemas/PaginationInfoDTO"}}},"ProcessInstanceDTO":{"type":"object","properties":{"id":{"type":"string"},"processId":{"type":"string"},"processName":{"type":"string"},"state":{"$ref":"#/components/schemas/ProcessInstanceStatusDTO"},"endpoint":{"type":"string"},"serviceUrl":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"duration":{"type":"string"},"description":{"type":"string"},"workflowdata":{"$ref":"#/components/schemas/WorkflowDataDTO"},"initiatorEntity":{"type":"string"},"targetEntity":{"type":"string"},"executionSummary":{"type":"array","items":{"type":"string"}},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/NodeInstanceDTO"}},"error":{"$ref":"#/components/schemas/ProcessInstanceErrorDTO"}},"required":["id","processId","nodes"]},"WorkflowDataDTO":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/WorkflowResultDTO"}},"additionalProperties":true},"WorkflowResultDTO":{"description":"Resultofaworkflowexecution","type":"object","properties":{"message":{"description":"High-levelsummaryofthecurrentstatus,free-formtext,humanreadable.","type":"string"},"nextWorkflows":{"description":"Listofworkflowssuggestedtorunnext.Itemsatlowerindexesareofhigherpriority.","type":"array","items":{"type":"object","properties":{"id":{"description":"Workflowidentifier","type":"string"},"name":{"description":"Humanreadabletitledescribingtheworkflow.","type":"string"}},"required":["id","name"]}},"outputs":{"description":"Additionalstructuredoutputofworkflowprocessing.Thiscancontainidentifiersofcreatedresources,linkstoresources,logsorotheroutput.","type":"array","items":{"type":"object","properties":{"key":{"description":"Uniqueidentifieroftheoption.Preferablyhuman-readable.","type":"string"},"value":{"description":"Freeformvalueoftheoption.","anyOf":[{"type":"string"},{"type":"number"}]},"format":{"description":"Moredetailedtypeofthe'value'property.Defaultsto'text'.","enum":["text","number","link","markdown"]}},"required":["key","value"]}}}},"ProcessInstanceStatusDTO":{"type":"string","description":"Statusoftheworkflowrun","enum":["ACTIVE","ERROR","COMPLETED","ABORTED","SUSPENDED","PENDING"]},"WorkflowRunStatusDTO":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}},"ExecuteWorkflowRequestDTO":{"type":"object","properties":{"inputData":{"type":"object","additionalProperties":true},"authTokens":{"type":"array","items":{"$ref":"#/components/schemas/AuthToken"},"minItems":0,"additionalProperties":true},"targetEntity":{"type":"string","description":"Theentitystringidentifiertoexecutetheworkflowfor"}}},"RetriggerInstanceRequestDTO":{"type":"object","properties":{"authTokens":{"type":"array","items":{"$ref":"#/components/schemas/AuthToken"},"minItems":0,"additionalProperties":true}}},"AuthToken":{"type":"object","properties":{"provider":{"description":"Theauthtokenprovidername","type":"string"},"token":{"description":"Theauthtokenitselfretrievedfromtheabovespecifiedprovidername","type":"string"}},"required":["provider","token"],"additionalProperties":false},"ExecuteWorkflowResponseDTO":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},"WorkflowProgressDTO":{"allOf":[{"$ref":"#/components/schemas/NodeInstanceDTO"},{"type":"object","properties":{"status":{"$ref":"#/components/schemas/ProcessInstanceStatusDTO"},"error":{"$ref":"#/components/schemas/ProcessInstanceErrorDTO"}}}]},"NodeInstanceDTO":{"type":"object","properties":{"__typename":{"type":"string","default":"NodeInstance","description":"Typename"},"id":{"type":"string","description":"NodeinstanceID"},"name":{"type":"string","description":"Nodename"},"type":{"type":"string","description":"Nodetype"},"enter":{"type":"string","description":"Datewhenthenodewasentered"},"exit":{"type":"string","description":"Datewhenthenodewasexited(optional)"},"definitionId":{"type":"string","description":"DefinitionID"},"nodeId":{"type":"string","description":"NodeID"}},"required":["id"]},"ProcessInstanceErrorDTO":{"type":"object","properties":{"__typename":{"type":"string","default":"ProcessInstanceError","description":"Typename"},"nodeDefinitionId":{"type":"string","description":"NodedefinitionID"},"message":{"type":"string","description":"Errormessage(optional)"}},"required":["nodeDefinitionId"]},"SearchRequest":{"type":"object","properties":{"filters":{"$ref":"#/components/schemas/Filter"},"paginationInfo":{"$ref":"#/components/schemas/PaginationInfoDTO"}}},"Filter":{"oneOf":[{"$ref":"#/components/schemas/LogicalFilter"},{"$ref":"#/components/schemas/FieldFilter"},{"$ref":"#/components/schemas/NestedFilter"}]},"NestedFilter":{"type":"object","required":["field","nested"],"properties":{"field":{"type":"string"},"nested":{"oneOf":[{"$ref":"#/components/schemas/FieldFilter"},{"$ref":"#/components/schemas/NestedFilter"}]}}},"LogicalFilter":{"type":"object","required":["operator","filters"],"properties":{"operator":{"type":"string","enum":["AND","OR","NOT"]},"filters":{"type":"array","items":{"$ref":"#/components/schemas/Filter"}}}},"FieldFilter":{"type":"object","required":["field","operator","value"],"properties":{"field":{"type":"string"},"operator":{"type":"string","enum":["EQ","GT","GTE","LT","LTE","IN","IS_NULL","LIKE","BETWEEN"]},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}},"InputSchemaResponseDTO":{"type":"object","properties":{"inputSchema":{"type":"object"},"data":{"type":"object"}}}}}}`; +const OPENAPI = `{"openapi":"3.1.0","info":{"title":"Orchestratorplugin","description":"APItointeractwithorchestratorplugin","license":{"name":"Apache2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"},"version":"0.0.1"},"servers":[{"url":"/"}],"paths":{"/v2/workflows/overview":{"post":{"operationId":"getWorkflowsOverview","description":"Returnsthekeyfieldsoftheworkflowincludingdataonthelastruninstance","requestBody":{"required":false,"description":"Paginationandfilters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowOverviewListResultDTO"}}}},"500":{"description":"Errorfetchingworkflowoverviews","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/overview/entity":{"post":{"operationId":"getWorkflowsOverviewForEntity","description":"Returnsthekeyfieldsoftheworkflowincludingdataonthelastruninstance","requestBody":{"required":false,"description":"Targetentityreferenceandannotationworkflowids","content":{"application/json":{"schema":{"type":"object","properties":{"targetEntity":{"type":"string"},"annotationWorkflowIds":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowOverviewListResultDTO"}}}},"500":{"description":"Errorfetchingworkflowoverviewsforentity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/overview":{"get":{"operationId":"getWorkflowOverviewById","description":"Returnsthekeyfieldsoftheworkflowincludingdataonthelastruninstance","parameters":[{"name":"workflowId","in":"path","required":true,"description":"Uniqueidentifieroftheworkflow","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowOverviewDTO"}}}},"500":{"description":"Errorfetchingworkflowoverview","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/source":{"get":{"operationId":"getWorkflowSourceById","description":"Gettheworkflow'sdefinition","parameters":[{"name":"workflowId","in":"path","description":"IDoftheworkflowtofetch","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"text/plain":{"schema":{"type":"string"}}}},"500":{"description":"Errorfetchingworkflowsourcebyid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/inputSchema":{"get":{"operationId":"getWorkflowInputSchemaById","description":"Gettheworkflowinputschema.Itdefinestheinputfieldsoftheworkflow","parameters":[{"name":"workflowId","in":"path","description":"IDoftheworkflowtofetch","required":true,"schema":{"type":"string"}},{"name":"instanceId","in":"query","description":"IDofinstance","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InputSchemaResponseDTO"}}}},"500":{"description":"Errorfetchingworkflowinputschemabyid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/pingWorkflowService":{"get":{"operationId":"pingWorkflowServiceById","description":"ReturnstrueiftheworkflowserviceisupforthegivenworkflowID.","parameters":[{"name":"workflowId","in":"path","description":"IDoftheworkflowtofetch","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"boolean"}}}},"500":{"description":"Errorpingingworkflowservicebyid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/instances":{"post":{"operationId":"getInstances","summary":"Getinstances","description":"Retrieveanarrayofworkflowexecutions(instances)","requestBody":{"required":false,"description":"Parametersforretrievinginstances","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessInstanceListResultDTO"}}}},"500":{"description":"Errorfetchinginstances","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/instances":{"post":{"operationId":"getWorkflowInstances","summary":"Getinstancesforaspecificworkflow","description":"Retrieveanarrayofworkflowexecutions(instances)forthegivenworkflow","parameters":[{"name":"workflowId","in":"path","required":true,"description":"IDoftheworkflow","schema":{"type":"string"}}],"requestBody":{"required":false,"description":"Parametersforretrievingworkflowinstances","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessInstanceListResultDTO"}}}},"500":{"description":"Errorfetchinginstances","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/instances/{instanceId}":{"get":{"summary":"GetWorkflowInstancebyID","description":"Getaworkflowexecution/run(instance)","operationId":"getInstanceById","parameters":[{"name":"instanceId","in":"path","required":true,"description":"IDoftheworkflowinstance","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfulresponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessInstanceDTO"}}}},"500":{"description":"Errorfetchinginstance","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/instances/{instanceId}/logs":{"get":{"operationId":"getWorkflowLogById","description":"ReturnsthelogforagivenworkflowID.","parameters":[{"name":"instanceId","in":"path","description":"IDoftheworkflowinstance","required":true,"schema":{"type":"string"}},{"name":"rawlog","in":"query","description":"whethertoreturntherawlogornot","schema":{"type":"boolean","default":"false"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowLogsResponse"}}}},"500":{"description":"Errorfetchingworkflowstatuses","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/instances/statuses":{"get":{"operationId":"getWorkflowStatuses","summary":"Getworkflowstatuslist","description":"Retrievearraywiththestatusofallinstances","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowRunStatusDTO"}}}}},"500":{"description":"Errorfetchingworkflowstatuses","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/execute":{"post":{"summary":"Executeaworkflow","description":"Executeaworkflow","operationId":"executeWorkflow","parameters":[{"name":"workflowId","in":"path","description":"IDoftheworkflowtoexecute","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteWorkflowRequestDTO"}}}},"responses":{"200":{"description":"Successfulexecution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteWorkflowResponseDTO"}}}},"500":{"description":"InternalServerError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/{workflowId}/{instanceId}/retrigger":{"post":{"summary":"Retriggeraninstance","description":"Retriggeraninstance","operationId":"retriggerInstance","parameters":[{"name":"workflowId","in":"path","description":"IDoftheworkflow","required":true,"schema":{"type":"string"}},{"name":"instanceId","in":"path","description":"IDoftheinstancetoretrigger","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetriggerInstanceRequestDTO"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"500":{"description":"InternalServerError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v2/workflows/instances/{instanceId}/abort":{"delete":{"summary":"Abortaworkflowinstance","operationId":"abortWorkflow","description":"AbortsaworkflowinstanceidentifiedbytheprovidedinstanceId.","parameters":[{"name":"instanceId","in":"path","required":true,"description":"Theidentifieroftheworkflowinstancetoabort.","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfuloperation","content":{"text/plain":{"schema":{"type":"string"}}}},"500":{"description":"Errorabortingworkflow","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"ErrorResponse":{"description":"TheErrorResponseobjectrepresentsacommonstructureforhandlingerrorsinAPIresponses.Itincludesessentialinformationabouttheerror,suchastheerrormessageandadditionaloptionaldetails.","type":"object","properties":{"message":{"description":"Astringprovidingaconciseandhuman-readabledescriptionoftheencounterederror.ThisfieldisrequiredintheErrorResponseobject.","type":"string","default":"internalservererror"},"additionalInfo":{"description":"Anoptionalfieldthatcancontainadditionalinformationorcontextabouttheerror.Itprovidesflexibilityforincludingextradetailsbasedonspecificerrorscenarios.","type":"string"}},"required":["message"]},"GetOverviewsRequestParams":{"type":"object","properties":{"paginationInfo":{"$ref":"#/components/schemas/PaginationInfoDTO"},"filters":{"$ref":"#/components/schemas/SearchRequest"}}},"WorkflowOverviewListResultDTO":{"type":"object","properties":{"overviews":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowOverviewDTO"},"minItems":0},"paginationInfo":{"$ref":"#/components/schemas/PaginationInfoDTO"}}},"WorkflowOverviewDTO":{"type":"object","properties":{"workflowId":{"type":"string","description":"Workflowuniqueidentifier","minLength":1},"name":{"type":"string","description":"Workflowname","minLength":1},"format":{"$ref":"#/components/schemas/WorkflowFormatDTO"},"lastRunId":{"type":"string"},"lastTriggeredMs":{"type":"number","minimum":0},"lastRunStatus":{"$ref":"#/components/schemas/ProcessInstanceStatusDTO"},"description":{"type":"string"},"isAvailable":{"type":"boolean"}},"required":["workflowId","format"]},"PaginationInfoDTO":{"type":"object","properties":{"pageSize":{"type":"number"},"offset":{"type":"number"},"orderDirection":{"enum":["ASC","DESC"]},"orderBy":{"type":"string"}},"additionalProperties":false},"WorkflowFormatDTO":{"type":"string","description":"Formatoftheworkflowdefinition","enum":["yaml","json"]},"WorkflowListResultDTO":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowDTO"}},"paginationInfo":{"$ref":"#/components/schemas/PaginationInfoDTO"}},"required":["items","paginationInfo"]},"WorkflowDTO":{"type":"object","properties":{"id":{"type":"string","description":"Workflowuniqueidentifier","minLength":1},"name":{"type":"string","description":"Workflowname","minLength":1},"format":{"$ref":"#/components/schemas/WorkflowFormatDTO"},"description":{"type":"string","description":"Descriptionoftheworkflow"},"annotations":{"type":"array","items":{"type":"string"}}},"required":["id","format"]},"ProcessInstanceListResultDTO":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProcessInstanceDTO"}},"paginationInfo":{"$ref":"#/components/schemas/PaginationInfoDTO"}}},"ProcessInstanceDTO":{"type":"object","properties":{"id":{"type":"string"},"processId":{"type":"string"},"processName":{"type":"string"},"state":{"$ref":"#/components/schemas/ProcessInstanceStatusDTO"},"endpoint":{"type":"string"},"serviceUrl":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"duration":{"type":"string"},"description":{"type":"string"},"workflowdata":{"$ref":"#/components/schemas/WorkflowDataDTO"},"initiatorEntity":{"type":"string"},"targetEntity":{"type":"string"},"executionSummary":{"type":"array","items":{"type":"string"}},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/NodeInstanceDTO"}},"error":{"$ref":"#/components/schemas/ProcessInstanceErrorDTO"}},"required":["id","processId","nodes"]},"WorkflowDataDTO":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/WorkflowResultDTO"}},"additionalProperties":true},"WorkflowResultDTO":{"description":"Resultofaworkflowexecution","type":"object","properties":{"message":{"description":"High-levelsummaryofthecurrentstatus,free-formtext,humanreadable.","type":"string"},"nextWorkflows":{"description":"Listofworkflowssuggestedtorunnext.Itemsatlowerindexesareofhigherpriority.","type":"array","items":{"type":"object","properties":{"id":{"description":"Workflowidentifier","type":"string"},"name":{"description":"Humanreadabletitledescribingtheworkflow.","type":"string"}},"required":["id","name"]}},"outputs":{"description":"Additionalstructuredoutputofworkflowprocessing.Thiscancontainidentifiersofcreatedresources,linkstoresources,logsorotheroutput.","type":"array","items":{"type":"object","properties":{"key":{"description":"Uniqueidentifieroftheoption.Preferablyhuman-readable.","type":"string"},"value":{"description":"Freeformvalueoftheoption.","anyOf":[{"type":"string"},{"type":"number"}]},"format":{"description":"Moredetailedtypeofthe'value'property.Defaultsto'text'.","enum":["text","number","link","markdown"]}},"required":["key","value"]}}}},"ProcessInstanceStatusDTO":{"type":"string","description":"Statusoftheworkflowrun","enum":["ACTIVE","ERROR","COMPLETED","ABORTED","SUSPENDED","PENDING"]},"WorkflowRunStatusDTO":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}},"ExecuteWorkflowRequestDTO":{"type":"object","properties":{"inputData":{"type":"object","additionalProperties":true},"authTokens":{"type":"array","items":{"$ref":"#/components/schemas/AuthToken"},"minItems":0,"additionalProperties":true},"targetEntity":{"type":"string","description":"Theentitystringidentifiertoexecutetheworkflowfor"}}},"RetriggerInstanceRequestDTO":{"type":"object","properties":{"authTokens":{"type":"array","items":{"$ref":"#/components/schemas/AuthToken"},"minItems":0,"additionalProperties":true}}},"AuthToken":{"type":"object","properties":{"provider":{"description":"Theauthtokenprovidername","type":"string"},"token":{"description":"Theauthtokenitselfretrievedfromtheabovespecifiedprovidername","type":"string"}},"required":["provider","token"],"additionalProperties":false},"ExecuteWorkflowResponseDTO":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]},"WorkflowProgressDTO":{"allOf":[{"$ref":"#/components/schemas/NodeInstanceDTO"},{"type":"object","properties":{"status":{"$ref":"#/components/schemas/ProcessInstanceStatusDTO"},"error":{"$ref":"#/components/schemas/ProcessInstanceErrorDTO"}}}]},"NodeInstanceDTO":{"type":"object","properties":{"__typename":{"type":"string","default":"NodeInstance","description":"Typename"},"id":{"type":"string","description":"NodeinstanceID"},"name":{"type":"string","description":"Nodename"},"type":{"type":"string","description":"Nodetype"},"enter":{"type":"string","description":"Datewhenthenodewasentered"},"exit":{"type":"string","description":"Datewhenthenodewasexited(optional)"},"definitionId":{"type":"string","description":"DefinitionID"},"nodeId":{"type":"string","description":"NodeID"}},"required":["id"]},"ProcessInstanceErrorDTO":{"type":"object","properties":{"__typename":{"type":"string","default":"ProcessInstanceError","description":"Typename"},"nodeDefinitionId":{"type":"string","description":"NodedefinitionID"},"message":{"type":"string","description":"Errormessage(optional)"}},"required":["nodeDefinitionId"]},"SearchRequest":{"type":"object","properties":{"filters":{"$ref":"#/components/schemas/Filter"},"paginationInfo":{"$ref":"#/components/schemas/PaginationInfoDTO"}}},"Filter":{"oneOf":[{"$ref":"#/components/schemas/LogicalFilter"},{"$ref":"#/components/schemas/FieldFilter"},{"$ref":"#/components/schemas/NestedFilter"}]},"NestedFilter":{"type":"object","required":["field","nested"],"properties":{"field":{"type":"string"},"nested":{"oneOf":[{"$ref":"#/components/schemas/FieldFilter"},{"$ref":"#/components/schemas/NestedFilter"}]}}},"LogicalFilter":{"type":"object","required":["operator","filters"],"properties":{"operator":{"type":"string","enum":["AND","OR","NOT"]},"filters":{"type":"array","items":{"$ref":"#/components/schemas/Filter"}}}},"FieldFilter":{"type":"object","required":["field","operator","value"],"properties":{"field":{"type":"string"},"operator":{"type":"string","enum":["EQ","GT","GTE","LT","LTE","IN","IS_NULL","LIKE","BETWEEN"]},"value":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]}}},"InputSchemaResponseDTO":{"type":"object","properties":{"inputSchema":{"type":"object"},"data":{"type":"object"}}},"WorkflowLogsResponse":{"description":"Resultofworkflowlogquery","type":"object","properties":{"instanceId":{"description":"TheIDoftheworkflowinstance","type":"string"},"logs":{"description":"AnArrayofthelogstoreturn","type":"array"}}}}}}`; export const openApiDocument = JSON.parse(OPENAPI); diff --git a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/client/api.ts b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/client/api.ts index eeb7096aa7..5bb5754951 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/client/api.ts +++ b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/client/api.ts @@ -639,6 +639,25 @@ export interface WorkflowListResultDTO { */ 'paginationInfo': PaginationInfoDTO; } +/** + * Result of workflow log query + * @export + * @interface WorkflowLogsResponse + */ +export interface WorkflowLogsResponse { + /** + * The ID of the workflow instance + * @type {string} + * @memberof WorkflowLogsResponse + */ + 'instanceId'?: string; + /** + * An Array of the logs to return + * @type {any} + * @memberof WorkflowLogsResponse + */ + 'logs'?: any; +} /** * * @export @@ -1114,6 +1133,44 @@ export const DefaultApiAxiosParamCreator = function (configuration?: Configurati options: localVarRequestOptions, }; }, + /** + * Returns the log for a given workflow ID. + * @param {string} instanceId ID of the workflow instance + * @param {boolean} [rawlog] whether to return the raw log or not + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getWorkflowLogById: async (instanceId: string, rawlog?: boolean, options: RawAxiosRequestConfig = {}): Promise => { + // verify required parameter 'instanceId' is not null or undefined + assertParamExists('getWorkflowLogById', 'instanceId', instanceId) + const localVarPath = `/v2/workflows/instances/{instanceId}/logs` + .replace(`{${"instanceId"}}`, encodeURIComponent(String(instanceId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + if (rawlog !== undefined) { + localVarQueryParameter['rawlog'] = rawlog; + } + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * Returns the key fields of the workflow including data on the last run instance * @param {string} workflowId Unique identifier of the workflow @@ -1443,6 +1500,19 @@ export const DefaultApiFp = function(configuration?: Configuration) { const localVarOperationServerBasePath = operationServerMap['DefaultApi.getWorkflowInstances']?.[localVarOperationServerIndex]?.url; return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); }, + /** + * Returns the log for a given workflow ID. + * @param {string} instanceId ID of the workflow instance + * @param {boolean} [rawlog] whether to return the raw log or not + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getWorkflowLogById(instanceId: string, rawlog?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getWorkflowLogById(instanceId, rawlog, options); + const localVarOperationServerIndex = configuration?.serverIndex ?? 0; + const localVarOperationServerBasePath = operationServerMap['DefaultApi.getWorkflowLogById']?.[localVarOperationServerIndex]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath); + }, /** * Returns the key fields of the workflow including data on the last run instance * @param {string} workflowId Unique identifier of the workflow @@ -1602,6 +1672,16 @@ export const DefaultApiFactory = function (configuration?: Configuration, basePa getWorkflowInstances(workflowId: string, searchRequest?: SearchRequest, options?: any): AxiosPromise { return localVarFp.getWorkflowInstances(workflowId, searchRequest, options).then((request) => request(axios, basePath)); }, + /** + * Returns the log for a given workflow ID. + * @param {string} instanceId ID of the workflow instance + * @param {boolean} [rawlog] whether to return the raw log or not + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getWorkflowLogById(instanceId: string, rawlog?: boolean, options?: any): AxiosPromise { + return localVarFp.getWorkflowLogById(instanceId, rawlog, options).then((request) => request(axios, basePath)); + }, /** * Returns the key fields of the workflow including data on the last run instance * @param {string} workflowId Unique identifier of the workflow @@ -1752,6 +1832,18 @@ export class DefaultApi extends BaseAPI { return DefaultApiFp(this.configuration).getWorkflowInstances(workflowId, searchRequest, options).then((request) => request(this.axios, this.basePath)); } + /** + * Returns the log for a given workflow ID. + * @param {string} instanceId ID of the workflow instance + * @param {boolean} [rawlog] whether to return the raw log or not + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DefaultApi + */ + public getWorkflowLogById(instanceId: string, rawlog?: boolean, options?: RawAxiosRequestConfig) { + return DefaultApiFp(this.configuration).getWorkflowLogById(instanceId, rawlog, options).then((request) => request(this.axios, this.basePath)); + } + /** * Returns the key fields of the workflow including data on the last run instance * @param {string} workflowId Unique identifier of the workflow diff --git a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/api-doc/orchestrator-api.yaml b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/api-doc/orchestrator-api.yaml index 9900422974..e93958fff7 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/api-doc/orchestrator-api.yaml +++ b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/api-doc/orchestrator-api.yaml @@ -259,6 +259,36 @@ spec: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + /v2/workflows/instances/{instanceId}/logs: + get: + operationId: getWorkflowLogById + description: Returns the log for a given workflow ID. + parameters: + - name: instanceId + in: path + description: ID of the workflow instance + required: true + schema: + type: string + - name: rawlog + in: query + description: whether to return the raw log or not + schema: + type: boolean + default: 'false' + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowLogsResponse' # Need to create something new here + '500': + description: Error fetching workflow statuses + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' /v2/workflows/instances/statuses: get: operationId: getWorkflowStatuses @@ -788,3 +818,14 @@ spec: type: object data: type: object + + WorkflowLogsResponse: + description: Result of workflow log query + type: object + properties: + instanceId: + description: The ID of the workflow instance + type: string + logs: + description: An Array of the logs to return + type: array diff --git a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/html/index.html b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/html/index.html index 28dd508368..c83fff2cc5 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/html/index.html +++ b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/html/index.html @@ -1237,6 +1237,18 @@ "$ref" : "#/components/schemas/PaginationInfoDTO" } } +}; + defs["WorkflowLogsResponse"] = { + "properties" : { + "instanceId" : { + "type" : "string", + "description" : "The ID of the workflow instance" + }, + "logs" : { + "description" : "An Array of the logs to return" + } + }, + "description" : "Result of workflow log query" }; defs["WorkflowOverviewDTO"] = { "required" : [ "format", "workflowId" ], @@ -1408,6 +1420,9 @@
  • getWorkflowInstances
  • +
  • + getWorkflowLogById +
  • getWorkflowOverviewById
  • @@ -4165,6 +4180,460 @@


    +
    +
    +
    +

    getWorkflowLogById

    +

    +
    +
    +
    +

    +

    Returns the log for a given workflow ID.

    +

    +
    +
    /v2/workflows/instances/{instanceId}/logs
    +

    +

    Usage and SDK Samples

    +

    + + +
    +
    +
    curl -X GET \
    + -H "Accept: application/json" \
    + "http://localhost/v2/workflows/instances/{instanceId}/logs?rawlog=true"
    +
    +
    +
    +
    import org.openapitools.client.*;
    +import org.openapitools.client.auth.*;
    +import org.openapitools.client.model.*;
    +import org.openapitools.client.api.DefaultApi;
    +
    +import java.io.File;
    +import java.util.*;
    +
    +public class DefaultApiExample {
    +    public static void main(String[] args) {
    +
    +        // Create an instance of the API class
    +        DefaultApi apiInstance = new DefaultApi();
    +        String instanceId = instanceId_example; // String | ID of the workflow instance
    +        Boolean rawlog = true; // Boolean | whether to return the raw log or not
    +
    +        try {
    +            WorkflowLogsResponse result = apiInstance.getWorkflowLogById(instanceId, rawlog);
    +            System.out.println(result);
    +        } catch (ApiException e) {
    +            System.err.println("Exception when calling DefaultApi#getWorkflowLogById");
    +            e.printStackTrace();
    +        }
    +    }
    +}
    +
    +
    + +
    +
    import 'package:openapi/api.dart';
    +
    +final api_instance = DefaultApi();
    +
    +final String instanceId = new String(); // String | ID of the workflow instance
    +final Boolean rawlog = new Boolean(); // Boolean | whether to return the raw log or not
    +
    +try {
    +    final result = await api_instance.getWorkflowLogById(instanceId, rawlog);
    +    print(result);
    +} catch (e) {
    +    print('Exception when calling DefaultApi->getWorkflowLogById: $e\n');
    +}
    +
    +
    +
    + +
    +
    import org.openapitools.client.api.DefaultApi;
    +
    +public class DefaultApiExample {
    +    public static void main(String[] args) {
    +        DefaultApi apiInstance = new DefaultApi();
    +        String instanceId = instanceId_example; // String | ID of the workflow instance
    +        Boolean rawlog = true; // Boolean | whether to return the raw log or not
    +
    +        try {
    +            WorkflowLogsResponse result = apiInstance.getWorkflowLogById(instanceId, rawlog);
    +            System.out.println(result);
    +        } catch (ApiException e) {
    +            System.err.println("Exception when calling DefaultApi#getWorkflowLogById");
    +            e.printStackTrace();
    +        }
    +    }
    +}
    +
    + +
    +
    
    +
    +// Create an instance of the API class
    +DefaultApi *apiInstance = [[DefaultApi alloc] init];
    +String *instanceId = instanceId_example; // ID of the workflow instance (default to null)
    +Boolean *rawlog = true; // whether to return the raw log or not (optional) (default to false)
    +
    +[apiInstance getWorkflowLogByIdWith:instanceId
    +    rawlog:rawlog
    +              completionHandler: ^(WorkflowLogsResponse output, NSError* error) {
    +    if (output) {
    +        NSLog(@"%@", output);
    +    }
    +    if (error) {
    +        NSLog(@"Error: %@", error);
    +    }
    +}];
    +
    +
    + +
    +
    var OrchestratorPlugin = require('orchestrator_plugin');
    +
    +// Create an instance of the API class
    +var api = new OrchestratorPlugin.DefaultApi()
    +var instanceId = instanceId_example; // {String} ID of the workflow instance
    +var opts = {
    +  'rawlog': true // {Boolean} whether to return the raw log or not
    +};
    +
    +var callback = function(error, data, response) {
    +  if (error) {
    +    console.error(error);
    +  } else {
    +    console.log('API called successfully. Returned data: ' + data);
    +  }
    +};
    +api.getWorkflowLogById(instanceId, opts, callback);
    +
    +
    + + +
    +
    using System;
    +using System.Diagnostics;
    +using Org.OpenAPITools.Api;
    +using Org.OpenAPITools.Client;
    +using Org.OpenAPITools.Model;
    +
    +namespace Example
    +{
    +    public class getWorkflowLogByIdExample
    +    {
    +        public void main()
    +        {
    +
    +            // Create an instance of the API class
    +            var apiInstance = new DefaultApi();
    +            var instanceId = instanceId_example;  // String | ID of the workflow instance (default to null)
    +            var rawlog = true;  // Boolean | whether to return the raw log or not (optional)  (default to false)
    +
    +            try {
    +                WorkflowLogsResponse result = apiInstance.getWorkflowLogById(instanceId, rawlog);
    +                Debug.WriteLine(result);
    +            } catch (Exception e) {
    +                Debug.Print("Exception when calling DefaultApi.getWorkflowLogById: " + e.Message );
    +            }
    +        }
    +    }
    +}
    +
    +
    + +
    +
    <?php
    +require_once(__DIR__ . '/vendor/autoload.php');
    +
    +// Create an instance of the API class
    +$api_instance = new OpenAPITools\Client\Api\DefaultApi();
    +$instanceId = instanceId_example; // String | ID of the workflow instance
    +$rawlog = true; // Boolean | whether to return the raw log or not
    +
    +try {
    +    $result = $api_instance->getWorkflowLogById($instanceId, $rawlog);
    +    print_r($result);
    +} catch (Exception $e) {
    +    echo 'Exception when calling DefaultApi->getWorkflowLogById: ', $e->getMessage(), PHP_EOL;
    +}
    +?>
    +
    + +
    +
    use Data::Dumper;
    +use WWW::OPenAPIClient::Configuration;
    +use WWW::OPenAPIClient::DefaultApi;
    +
    +# Create an instance of the API class
    +my $api_instance = WWW::OPenAPIClient::DefaultApi->new();
    +my $instanceId = instanceId_example; # String | ID of the workflow instance
    +my $rawlog = true; # Boolean | whether to return the raw log or not
    +
    +eval {
    +    my $result = $api_instance->getWorkflowLogById(instanceId => $instanceId, rawlog => $rawlog);
    +    print Dumper($result);
    +};
    +if ($@) {
    +    warn "Exception when calling DefaultApi->getWorkflowLogById: $@\n";
    +}
    +
    + +
    +
    from __future__ import print_statement
    +import time
    +import openapi_client
    +from openapi_client.rest import ApiException
    +from pprint import pprint
    +
    +# Create an instance of the API class
    +api_instance = openapi_client.DefaultApi()
    +instanceId = instanceId_example # String | ID of the workflow instance (default to null)
    +rawlog = true # Boolean | whether to return the raw log or not (optional) (default to false)
    +
    +try:
    +    api_response = api_instance.get_workflow_log_by_id(instanceId, rawlog=rawlog)
    +    pprint(api_response)
    +except ApiException as e:
    +    print("Exception when calling DefaultApi->getWorkflowLogById: %s\n" % e)
    +
    + +
    +
    extern crate DefaultApi;
    +
    +pub fn main() {
    +    let instanceId = instanceId_example; // String
    +    let rawlog = true; // Boolean
    +
    +    let mut context = DefaultApi::Context::default();
    +    let result = client.getWorkflowLogById(instanceId, rawlog, &context).wait();
    +
    +    println!("{:?}", result);
    +}
    +
    +
    +
    + +

    Scopes

    + + +
    + +

    Parameters

    + +
    Path parameters
    + + + + + + + + + +
    NameDescription
    instanceId* + + +
    +
    +
    + + String + + +
    +ID of the workflow instance +
    +
    +
    + Required +
    +
    +
    +
    + + + + +
    Query parameters
    + + + + + + + + + +
    NameDescription
    rawlog + + +
    +
    +
    + + Boolean + + +
    +whether to return the raw log or not +
    +
    +
    +
    +
    + +

    Responses

    +

    +

    + + + + + + +
    +
    +
    + +
    + +
    +
    +

    +

    + + + + + + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    diff --git a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/.openapi-generator/FILES b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/.openapi-generator/FILES index a054cd7b78..384b4f7f62 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/.openapi-generator/FILES +++ b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/.openapi-generator/FILES @@ -24,6 +24,7 @@ Models/WorkflowDTO.md Models/WorkflowDataDTO.md Models/WorkflowFormatDTO.md Models/WorkflowListResultDTO.md +Models/WorkflowLogsResponse.md Models/WorkflowOverviewDTO.md Models/WorkflowOverviewListResultDTO.md Models/WorkflowProgressDTO.md diff --git a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/Apis/DefaultApi.md b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/Apis/DefaultApi.md index 50e2c40d02..fd7a0e275d 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/Apis/DefaultApi.md +++ b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/Apis/DefaultApi.md @@ -10,6 +10,7 @@ All URIs are relative to *http://localhost* | [**getInstances**](DefaultApi.md#getInstances) | **POST** /v2/workflows/instances | Get instances | | [**getWorkflowInputSchemaById**](DefaultApi.md#getWorkflowInputSchemaById) | **GET** /v2/workflows/{workflowId}/inputSchema | | | [**getWorkflowInstances**](DefaultApi.md#getWorkflowInstances) | **POST** /v2/workflows/{workflowId}/instances | Get instances for a specific workflow | +| [**getWorkflowLogById**](DefaultApi.md#getWorkflowLogById) | **GET** /v2/workflows/instances/{instanceId}/logs | | | [**getWorkflowOverviewById**](DefaultApi.md#getWorkflowOverviewById) | **GET** /v2/workflows/{workflowId}/overview | | | [**getWorkflowSourceById**](DefaultApi.md#getWorkflowSourceById) | **GET** /v2/workflows/{workflowId}/source | | | [**getWorkflowStatuses**](DefaultApi.md#getWorkflowStatuses) | **GET** /v2/workflows/instances/statuses | Get workflow status list | @@ -184,6 +185,34 @@ No authorization required - **Content-Type**: application/json - **Accept**: application/json + +# **getWorkflowLogById** +> WorkflowLogsResponse getWorkflowLogById(instanceId, rawlog) + + + + Returns the log for a given workflow ID. + +### Parameters + +|Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **instanceId** | **String**| ID of the workflow instance | [default to null] | +| **rawlog** | **Boolean**| whether to return the raw log or not | [optional] [default to false] | + +### Return type + +[**WorkflowLogsResponse**](../Models/WorkflowLogsResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + # **getWorkflowOverviewById** > WorkflowOverviewDTO getWorkflowOverviewById(workflowId) diff --git a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/Models/WorkflowLogsResponse.md b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/Models/WorkflowLogsResponse.md new file mode 100644 index 0000000000..333183d20b --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/Models/WorkflowLogsResponse.md @@ -0,0 +1,10 @@ +# WorkflowLogsResponse +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **instanceId** | **String** | The ID of the workflow instance | [optional] [default to null] | +| **logs** | [**oas_any_type_not_mapped**](.md) | An Array of the logs to return | [optional] [default to null] | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/README.md b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/README.md index 4967cc5715..ea12698905 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/README.md +++ b/workspaces/orchestrator/plugins/orchestrator-common/src/generated/docs/markdown/README.md @@ -13,6 +13,7 @@ All URIs are relative to *http://localhost* *DefaultApi* | [**getInstances**](Apis/DefaultApi.md#getinstances) | **POST** /v2/workflows/instances | Get instances | *DefaultApi* | [**getWorkflowInputSchemaById**](Apis/DefaultApi.md#getworkflowinputschemabyid) | **GET** /v2/workflows/{workflowId}/inputSchema | Get the workflow input schema. It defines the input fields of the workflow | *DefaultApi* | [**getWorkflowInstances**](Apis/DefaultApi.md#getworkflowinstances) | **POST** /v2/workflows/{workflowId}/instances | Get instances for a specific workflow | +*DefaultApi* | [**getWorkflowLogById**](Apis/DefaultApi.md#getworkflowlogbyid) | **GET** /v2/workflows/instances/{instanceId}/logs | Returns the log for a given workflow ID. | *DefaultApi* | [**getWorkflowOverviewById**](Apis/DefaultApi.md#getworkflowoverviewbyid) | **GET** /v2/workflows/{workflowId}/overview | Returns the key fields of the workflow including data on the last run instance | *DefaultApi* | [**getWorkflowSourceById**](Apis/DefaultApi.md#getworkflowsourcebyid) | **GET** /v2/workflows/{workflowId}/source | Get the workflow's definition | *DefaultApi* | [**getWorkflowStatuses**](Apis/DefaultApi.md#getworkflowstatuses) | **GET** /v2/workflows/instances/statuses | Get workflow status list | @@ -49,6 +50,7 @@ All URIs are relative to *http://localhost* - [WorkflowDataDTO](./Models/WorkflowDataDTO.md) - [WorkflowFormatDTO](./Models/WorkflowFormatDTO.md) - [WorkflowListResultDTO](./Models/WorkflowListResultDTO.md) + - [WorkflowLogsResponse](./Models/WorkflowLogsResponse.md) - [WorkflowOverviewDTO](./Models/WorkflowOverviewDTO.md) - [WorkflowOverviewListResultDTO](./Models/WorkflowOverviewListResultDTO.md) - [WorkflowProgressDTO](./Models/WorkflowProgressDTO.md) diff --git a/workspaces/orchestrator/plugins/orchestrator-common/src/openapi/openapi.yaml b/workspaces/orchestrator/plugins/orchestrator-common/src/openapi/openapi.yaml index 2055925862..131c97ea60 100644 --- a/workspaces/orchestrator/plugins/orchestrator-common/src/openapi/openapi.yaml +++ b/workspaces/orchestrator/plugins/orchestrator-common/src/openapi/openapi.yaml @@ -247,6 +247,36 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + /v2/workflows/instances/{instanceId}/logs: + get: + operationId: getWorkflowLogById + description: Returns the log for a given workflow ID. + parameters: + - name: instanceId + in: path + description: ID of the workflow instance + required: true + schema: + type: string + - name: rawlog + in: query + description: whether to return the raw log or not + schema: + type: boolean + default: 'false' + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowLogsResponse' # Need to create something new here + '500': + description: Error fetching workflow statuses + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' /v2/workflows/instances/statuses: get: operationId: getWorkflowStatuses @@ -776,3 +806,14 @@ components: type: object data: type: object + + WorkflowLogsResponse: + description: Result of workflow log query + type: object + properties: + instanceId: + description: The ID of the workflow instance + type: string + logs: + description: An Array of the logs to return + type: array diff --git a/workspaces/orchestrator/plugins/orchestrator-node/.eslintrc.js b/workspaces/orchestrator/plugins/orchestrator-node/.eslintrc.js new file mode 100644 index 0000000000..9184408ae4 --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-node/.eslintrc.js @@ -0,0 +1,16 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/workspaces/orchestrator/plugins/orchestrator-node/README.md b/workspaces/orchestrator/plugins/orchestrator-node/README.md new file mode 100644 index 0000000000..dc73a610ce --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-node/README.md @@ -0,0 +1,5 @@ +# @@red-hat-developer-hub/backstage-plugin-orchestrator-node + +Welcome to the Node.js library package for the orchestrator plugin! + +_This plugin was created through the Backstage CLI_ diff --git a/workspaces/orchestrator/plugins/orchestrator-node/package.json b/workspaces/orchestrator/plugins/orchestrator-node/package.json new file mode 100644 index 0000000000..dfe0b5bb14 --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-node/package.json @@ -0,0 +1,66 @@ +{ + "name": "@red-hat-developer-hub/backstage-plugin-orchestrator-node", + "version": "0.1.0", + "license": "Apache-2.0", + "description": "Node.js library for the orchestrator plugin", + "main": "src/index.ts", + "types": "src/index.ts", + "publishConfig": { + "access": "public" + }, + "backstage": { + "role": "node-library", + "pluginId": "orchestrator", + "pluginPackages": [ + "@red-hat-developer-hub/backstage-plugin-orchestrator", + "@red-hat-developer-hub/backstage-plugin-orchestrator-backend", + "@red-hat-developer-hub/backstage-plugin-orchestrator-common", + "@red-hat-developer-hub/backstage-plugin-orchestrator-node" + ] + }, + "exports": { + ".": "./src/index.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "package.json": [ + "package.json" + ] + } + }, + "scripts": { + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start", + "tsc": "tsc", + "prettier:check": "prettier --ignore-unknown --check .", + "prettier:fix": "prettier --ignore-unknown --write ." + }, + "dependencies": { + "@backstage/backend-plugin-api": "^1.4.4", + "@red-hat-developer-hub/backstage-plugin-orchestrator-common": "workspace:^" + }, + "devDependencies": { + "@backstage/cli": "^0.34.4" + }, + "files": [ + "dist" + ], + "repository": { + "type": "git", + "url": "https://github.com/redhat-developer/rhdh-plugins", + "directory": "workspaces/orchestrator/plugins/orchestrator-node" + }, + "keywords": [ + "backstage", + "plugin" + ], + "homepage": "https://red.ht/rhdh", + "bugs": "https://github.com/redhat-developer/rhdh-plugins/issues", + "author": "Red Hat" +} diff --git a/workspaces/orchestrator/plugins/orchestrator-node/report.api.md b/workspaces/orchestrator/plugins/orchestrator-node/report.api.md new file mode 100644 index 0000000000..1925582852 --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-node/report.api.md @@ -0,0 +1,40 @@ +## API Report File for "@red-hat-developer-hub/backstage-plugin-orchestrator-node" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { ExtensionPoint } from '@backstage/backend-plugin-api'; +import { ProcessInstanceDTO } from '@red-hat-developer-hub/backstage-plugin-orchestrator-common'; +import { WorkflowLogsResponse } from '@red-hat-developer-hub/backstage-plugin-orchestrator-common'; + +// @public (undocumented) +export interface WorkflowLogProvider { + // (undocumented) + fetchWorkflowLogsByInstance(workflowInstance: ProcessInstanceDTO): Promise; + // (undocumented) + getBaseURL(): string; + // (undocumented) + getProviderId(): string; +} + +// @public (undocumented) +export const workflowLogsExtensionEndpoint: ExtensionPoint; + +// @public (undocumented) +export interface WorkflowLogsExtensionPoint { + // (undocumented) + addWorkflowLogProvider(...workflowLogProviders: Array): void; +} + +// Warnings were encountered during analysis: +// +// src/api/WorkflowLogProvider.d.ts:5:1 - (ae-undocumented) Missing documentation for "WorkflowLogProvider". +// src/api/WorkflowLogProvider.d.ts:6:5 - (ae-undocumented) Missing documentation for "getProviderId". +// src/api/WorkflowLogProvider.d.ts:7:5 - (ae-undocumented) Missing documentation for "getBaseURL". +// src/api/WorkflowLogProvider.d.ts:8:5 - (ae-undocumented) Missing documentation for "fetchWorkflowLogsByInstance". +// src/extensions.d.ts:5:1 - (ae-undocumented) Missing documentation for "WorkflowLogsExtensionPoint". +// src/extensions.d.ts:6:5 - (ae-undocumented) Missing documentation for "addWorkflowLogProvider". +// src/extensions.d.ts:11:22 - (ae-undocumented) Missing documentation for "workflowLogsExtensionEndpoint". + +``` diff --git a/workspaces/orchestrator/plugins/orchestrator-node/src/api/WorkflowLogProvider.ts b/workspaces/orchestrator/plugins/orchestrator-node/src/api/WorkflowLogProvider.ts new file mode 100644 index 0000000000..e96bf56602 --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-node/src/api/WorkflowLogProvider.ts @@ -0,0 +1,31 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + ProcessInstanceDTO, + WorkflowLogsResponse, +} from '@red-hat-developer-hub/backstage-plugin-orchestrator-common'; + +/** + * @public + */ +export interface WorkflowLogProvider { + getProviderId(): string; + getBaseURL(): string; + fetchWorkflowLogsByInstance( + workflowInstance: ProcessInstanceDTO, + ): Promise; +} diff --git a/workspaces/orchestrator/plugins/orchestrator-node/src/api/index.ts b/workspaces/orchestrator/plugins/orchestrator-node/src/api/index.ts new file mode 100644 index 0000000000..d1366ae8fb --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-node/src/api/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export type { WorkflowLogProvider } from './WorkflowLogProvider'; diff --git a/workspaces/orchestrator/plugins/orchestrator-node/src/extensions.ts b/workspaces/orchestrator/plugins/orchestrator-node/src/extensions.ts new file mode 100644 index 0000000000..204192a4ae --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-node/src/extensions.ts @@ -0,0 +1,35 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createExtensionPoint } from '@backstage/backend-plugin-api'; +import { WorkflowLogProvider } from './api'; + +/** + * @public + */ +export interface WorkflowLogsExtensionPoint { + addWorkflowLogProvider( + ...workflowLogProviders: Array + ): void; +} + +/** + * @public + */ +export const workflowLogsExtensionEndpoint = + createExtensionPoint({ + id: 'orchestrator.workflowlogs', + }); diff --git a/workspaces/orchestrator/plugins/orchestrator-node/src/index.ts b/workspaces/orchestrator/plugins/orchestrator-node/src/index.ts new file mode 100644 index 0000000000..be45fd025a --- /dev/null +++ b/workspaces/orchestrator/plugins/orchestrator-node/src/index.ts @@ -0,0 +1,27 @@ +/* + * Copyright Red Hat, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Node.js library for the orchestrator plugin. + * + * @packageDocumentation + */ + +// In this package you might for example export functions that +// help other plugins or modules interact with your plugin. + +export * from './extensions'; +export * from './api'; diff --git a/workspaces/orchestrator/plugins/orchestrator/package.json b/workspaces/orchestrator/plugins/orchestrator/package.json index e6ef65e35f..bbbf3a1c85 100644 --- a/workspaces/orchestrator/plugins/orchestrator/package.json +++ b/workspaces/orchestrator/plugins/orchestrator/package.json @@ -15,7 +15,8 @@ "pluginPackages": [ "@red-hat-developer-hub/backstage-plugin-orchestrator", "@red-hat-developer-hub/backstage-plugin-orchestrator-backend", - "@red-hat-developer-hub/backstage-plugin-orchestrator-common" + "@red-hat-developer-hub/backstage-plugin-orchestrator-common", + "@red-hat-developer-hub/backstage-plugin-orchestrator-node" ] }, "homepage": "https://red.ht/rhdh", diff --git a/workspaces/orchestrator/yarn.lock b/workspaces/orchestrator/yarn.lock index 2da7e99ef4..6b05b20133 100644 --- a/workspaces/orchestrator/yarn.lock +++ b/workspaces/orchestrator/yarn.lock @@ -2927,7 +2927,7 @@ __metadata: languageName: node linkType: hard -"@backstage/backend-plugin-api@npm:^1.5.0": +"@backstage/backend-plugin-api@npm:1.5.0": version: 1.5.0 resolution: "@backstage/backend-plugin-api@npm:1.5.0" dependencies: @@ -3014,9 +3014,14 @@ __metadata: linkType: hard "@backstage/cli-common@npm:^0.1.15": - version: 0.1.15 - resolution: "@backstage/cli-common@npm:0.1.15" - checksum: fbfded2ff0122c28c2104fa40703486c0fe5c43acd68de2659533d46ebc11f296a06c45499d0ced1579a75ee6002739d2cb90f08fe2587e887d79b82d4f91515 + version: 0.1.16 + resolution: "@backstage/cli-common@npm:0.1.16" + dependencies: + "@backstage/errors": ^1.2.7 + cross-spawn: ^7.0.3 + global-agent: ^3.0.0 + undici: ^7.2.3 + checksum: 8fba4579aa834a22786df220985a90ef68308c3be9a5ee89b416d69aec4e575551192eb4936175c858bb45418a3c9a6b269742c42798bc39cd00bcb051eabe67 languageName: node linkType: hard @@ -3036,7 +3041,7 @@ __metadata: languageName: node linkType: hard -"@backstage/cli@npm:^0.34.5": +"@backstage/cli@npm:^0.34.4, @backstage/cli@npm:^0.34.5": version: 0.34.5 resolution: "@backstage/cli@npm:0.34.5" dependencies: @@ -3776,11 +3781,11 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-auth-node@npm:^0.6.9": - version: 0.6.9 - resolution: "@backstage/plugin-auth-node@npm:0.6.9" +"@backstage/plugin-auth-node@npm:^0.6.10, @backstage/plugin-auth-node@npm:^0.6.9": + version: 0.6.10 + resolution: "@backstage/plugin-auth-node@npm:0.6.10" dependencies: - "@backstage/backend-plugin-api": ^1.5.0 + "@backstage/backend-plugin-api": ^1.6.0 "@backstage/catalog-client": ^1.12.1 "@backstage/catalog-model": ^1.7.6 "@backstage/config": ^1.3.6 @@ -3788,14 +3793,14 @@ __metadata: "@backstage/types": ^1.2.2 "@types/express": ^4.17.6 "@types/passport": ^1.0.3 - express: ^4.17.1 + express: ^4.22.0 jose: ^5.0.0 lodash: ^4.17.21 passport: ^0.7.0 zod: ^3.22.4 zod-to-json-schema: ^3.21.4 zod-validation-error: ^3.4.0 - checksum: a69d61db47ef088daa25d2bfd134c6225235bee4277cec4fa22befb13d1a40fa50f8481432edb9a7f3601e20c15fa31b894184ff1875331d42f281b170076e87 + checksum: d94c2e6652ea3e05dc7899c3c94b6293950f067bd9c4dcf71072e6d3f754043448248e2805e6145a06ea5f7abcb6036249e4324c22af6456282a827f6dbf673e languageName: node linkType: hard @@ -4342,20 +4347,20 @@ __metadata: linkType: hard "@backstage/plugin-permission-node@npm:^0.10.6": - version: 0.10.6 - resolution: "@backstage/plugin-permission-node@npm:0.10.6" + version: 0.10.7 + resolution: "@backstage/plugin-permission-node@npm:0.10.7" dependencies: - "@backstage/backend-plugin-api": ^1.5.0 + "@backstage/backend-plugin-api": ^1.6.0 "@backstage/config": ^1.3.6 "@backstage/errors": ^1.2.7 - "@backstage/plugin-auth-node": ^0.6.9 + "@backstage/plugin-auth-node": ^0.6.10 "@backstage/plugin-permission-common": ^0.9.3 "@types/express": ^4.17.6 - express: ^4.17.1 + express: ^4.22.0 express-promise-router: ^4.1.0 zod: ^3.22.4 zod-to-json-schema: ^3.20.4 - checksum: b29c79b3d563fb2712767e50a8e0a026257df88acbeb260d666c7062fe007ea4174f142b305b6e63f159f85f20b6603bcf2df53fdd46573702df9e3b3174dcff + checksum: 645e3a2278885dab0f642ce48139cdf20df45b195e604905092e158e42827b0517d69d7f0f98a9cfbd738d7482727cc0b1bc34a79e86f95ff60f85b0d008f4f3 languageName: node linkType: hard @@ -12411,6 +12416,20 @@ __metadata: languageName: node linkType: hard +"@red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki@workspace:^, @red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki@workspace:plugins/orchestrator-backend-module-loki": + version: 0.0.0-use.local + resolution: "@red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki@workspace:plugins/orchestrator-backend-module-loki" + dependencies: + "@backstage/backend-plugin-api": ^1.5.0 + "@backstage/backend-test-utils": ^1.10.0 + "@backstage/cli": ^0.34.5 + "@backstage/config": ^1.3.6 + "@red-hat-developer-hub/backstage-plugin-orchestrator-common": "workspace:^" + "@red-hat-developer-hub/backstage-plugin-orchestrator-node": "workspace:^" + luxon: ^3.7.2 + languageName: unknown + linkType: soft + "@red-hat-developer-hub/backstage-plugin-orchestrator-backend@workspace:^, @red-hat-developer-hub/backstage-plugin-orchestrator-backend@workspace:plugins/orchestrator-backend": version: 0.0.0-use.local resolution: "@red-hat-developer-hub/backstage-plugin-orchestrator-backend@workspace:plugins/orchestrator-backend" @@ -12432,6 +12451,7 @@ __metadata: "@janus-idp/backstage-plugin-audit-log-node": ^1.7.1 "@janus-idp/cli": 3.6.1 "@red-hat-developer-hub/backstage-plugin-orchestrator-common": "workspace:^" + "@red-hat-developer-hub/backstage-plugin-orchestrator-node": "workspace:^" "@types/express": 4.17.25 "@types/fs-extra": 11.0.4 "@types/json-schema": 7.0.15 @@ -12566,6 +12586,16 @@ __metadata: languageName: unknown linkType: soft +"@red-hat-developer-hub/backstage-plugin-orchestrator-node@workspace:^, @red-hat-developer-hub/backstage-plugin-orchestrator-node@workspace:plugins/orchestrator-node": + version: 0.0.0-use.local + resolution: "@red-hat-developer-hub/backstage-plugin-orchestrator-node@workspace:plugins/orchestrator-node" + dependencies: + "@backstage/backend-plugin-api": ^1.4.4 + "@backstage/cli": ^0.34.4 + "@red-hat-developer-hub/backstage-plugin-orchestrator-common": "workspace:^" + languageName: unknown + linkType: soft + "@red-hat-developer-hub/backstage-plugin-orchestrator@workspace:^, @red-hat-developer-hub/backstage-plugin-orchestrator@workspace:plugins/orchestrator": version: 0.0.0-use.local resolution: "@red-hat-developer-hub/backstage-plugin-orchestrator@workspace:plugins/orchestrator" @@ -17998,6 +18028,7 @@ __metadata: "@backstage/plugin-signals-backend": ^0.3.10 "@backstage/plugin-techdocs-backend": ^2.1.2 "@red-hat-developer-hub/backstage-plugin-orchestrator-backend": "workspace:^" + "@red-hat-developer-hub/backstage-plugin-orchestrator-backend-module-loki": "workspace:^" "@red-hat-developer-hub/backstage-plugin-scaffolder-backend-module-orchestrator": "workspace:^" "@types/express": ^4.17.6 "@types/express-serve-static-core": ^4.17.5 @@ -22650,7 +22681,7 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.14.0, express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.2, express@npm:^4.21.2": +"express@npm:^4.14.0, express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.2, express@npm:^4.21.2, express@npm:^4.22.0": version: 4.22.1 resolution: "express@npm:4.22.1" dependencies: