diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index f526c4a1..a680a524 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -39,7 +39,7 @@ To help you navigate the project, here is a breakdown of the key directories: - `src/Workspace`: Model persistence and management. - `src/Plugins`: Logic for reading, installing and loading plugins. - **`Integrations/VS-Code`**: VS Code extension -- **`MCP`**: MCP Server +- **`Integrations/MCP`**: MCP Server - **`docs/`**: Documentation source files, built with **VitePress**. - **`scripts/`**: Utility scripts for building, packing, and maintaining the project. @@ -94,7 +94,8 @@ ScriptBee uses a namespaced tagging strategy to manage independent component rel | `analysis@` | Analysis Microservice | Docker: `dxworks/scriptbee-analysis` | No (Silent) | | `plugin-api@` | Plugin API | NuGet: `DxWorks.ScriptBee.Plugin.Api` | **Yes** | | `bundle@` | Default Plugin Bundle | Zip Archive | **Yes** | -| `vs-code@` | Default Plugin Bundle | vsix file | **Yes** | +| `vs-code@` | VS Code Extension | vsix file | **Yes** | +| `mcp@` | MCP Server | Docker: `dxworks/scriptbee-mcp` | **Yes** | ### Release Process diff --git a/docs/index.md b/docs/index.md index c68bcdc7..4438d680 100644 --- a/docs/index.md +++ b/docs/index.md @@ -15,3 +15,7 @@ To get ScriptBee up and running quickly with Docker, use the following command: ```shell docker-compose up ``` + +## AI Integrations + +ScriptBee exposes a Model Context Protocol (MCP) server for integration with tools like Claude Code and VS Code. See the [MCP Integration Guide](installation/mcp.md) for details. diff --git a/docs/installation/mcp.md b/docs/installation/mcp.md new file mode 100644 index 00000000..f423be4d --- /dev/null +++ b/docs/installation/mcp.md @@ -0,0 +1,114 @@ +# Model Context Protocol (MCP) Integration + +ScriptBee provides an official MCP Server that exposes its capabilities—like project management, data context loading, +and script analysis—to AI clients (e.g. Claude Code, Cursor, and VS Code). + +## Requirements + +To use the MCP server, you must have the ScriptBee backend running. + +## Connecting Clients + +### Using HTTP Transport + +When running the ScriptBee MCP server via `dotnet run`, it defaults to HTTP transport. Clients can connect to the `/mcp` +endpoint. + +For clients that support connecting to a remote MCP server natively via a URL (such as GitHub Copilot / VS Code via its +MCP extension), you can configure the connection directly in your `mcp.json` like this: + +```json +{ + "mcpServers": { + "scriptbee-mcp-server": { + "url": "http://localhost:5094/mcp", + "type": "http" + } + } +} +``` + +_(Replace `5094` with the actual port the MCP server is running on)_ + +### Using Docker Transport (For IDEs and Claude Code) + +If you prefer not to manage a local .NET runtime or compile the executable manually, you can run the ScriptBee MCP +server directly from its official Docker image (dxworks/scriptbee-mcp). + +Since local IDE clients and Claude Code spawn the MCP server as a subprocess via standard input/output, you must run the +Docker container in interactive mode (-i) and pass the --stdio flag to the container. + +#### Configuration (mcp.json) + +Add the following configuration to your mcp.json file. This tells your client to spin up the Docker container on demand, +while passing the GatewayApiUrl environment variable to point the MCP server to your ScriptBee backend: + +```json +{ + "mcpServers": { + "scriptbee-docker": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GatewayApiUrl=http://localhost:5117", + "dxworks/scriptbee-mcp:latest", + "--stdio" + ] + } + } +} +``` + +> [!NOTE] +> Networking Note: If your ScriptBee Gateway API is also running inside a Docker container on the same machine, +> replacing localhost with host.docker.internal (e.g., -e GatewayApiUrl=http://host.docker.internal:5117) will allow the +> MCP container to communicate with it. + +### Using Stdio Transport (For IDEs and Claude Code) + +For local integrations where the client spawns the server directly, you can run the MCP server with the `--stdio` flag. + +#### Configuration (`mcp.json`) + +To configure a client like Claude Code or VS Code to use the ScriptBee MCP server, you should point directly to the +compiled executable. + +After building/publishing the MCP server (e.g., `dotnet publish -c Release`), add the following to your `mcp.json` or +equivalent configuration file: + +```json +{ + "mcpServers": { + "scriptbee": { + "command": "/absolute/path/to/ScriptBee.MCP.exe", + "args": ["--stdio"] + } + } +} +``` + +_(On macOS/Linux, the command would be the path to the `ScriptBee.MCP` binary without the `.exe` extension, or `dotnet` +with the path to `ScriptBee.MCP.dll` as the first argument)._ + +## Capabilities + +The ScriptBee MCP server exposes the following primitives to the AI: + +- **Tools**: Perform actions like creating projects, executing scripts, loading/linking data context, and triggering + analyses. +- **Resources**: Browse script source code, view analysis console outputs, and inspect the loaded instance context + graph. +- **Prompts**: Built-in workflows that guide the AI through tasks, such as exploring a project's state or executing a + full analysis run. + +## Configuration + +The ScriptBee MCP server can be configured via command-line arguments or environment variables. Below are the available +options: + +| Option | Description | Default | +| ------------- | ------------------------------------- | ----------------------- | +| GatewayApiUrl | The URL of the ScriptBee Gateway API. | `http://localhost:5117` | diff --git a/docs/public/analysis_swagger.json b/docs/public/analysis_swagger.json index a1d44d42..cf6ad0a1 100644 --- a/docs/public/analysis_swagger.json +++ b/docs/public/analysis_swagger.json @@ -13,9 +13,7 @@ "paths": { "/api/plugins": { "get": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Get installed plugins", "description": "Retrieves a list of all plugins currently installed in the analysis service.", "operationId": "PluginsGet", @@ -33,9 +31,7 @@ } }, "post": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Install a plugin", "description": "Installs a specific plugin version into the analysis service.", "operationId": "PluginsPost", @@ -78,9 +74,7 @@ }, "/api/plugins/{pluginId}": { "delete": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Uninstall a plugin", "description": "Uninstalls a specific plugin version from the analysis service.", "operationId": "PluginsDelete", @@ -111,9 +105,7 @@ }, "/api/context/clear": { "post": { - "tags": [ - "Context" - ], + "tags": ["Context"], "summary": "Clear analysis context", "description": "Clears all data from the current analysis context.", "operationId": "Clear", @@ -126,9 +118,7 @@ }, "/api/context/generate-classes": { "post": { - "tags": [ - "Context" - ], + "tags": ["Context"], "summary": "Generate classes for analysis context", "description": "Generates script classes based on the current data context and returns them as a stream.", "operationId": "GenerateClasses", @@ -151,9 +141,7 @@ }, "/api/context": { "get": { - "tags": [ - "Context" - ], + "tags": ["Context"], "summary": "Get analysis context", "description": "Retrieves the current data context from the analysis service.", "operationId": "Context", @@ -173,10 +161,7 @@ }, "/api/context/graph-nodes": { "get": { - "tags": [ - "Context", - "Graph" - ], + "tags": ["Context", "Graph"], "summary": "Search context nodes", "description": "Searches for context nodes based on a query string.", "operationId": "GraphNodes", @@ -194,10 +179,7 @@ "in": "query", "schema": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], + "type": ["integer", "string"], "format": "int32", "default": 0 } @@ -207,10 +189,7 @@ "in": "query", "schema": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], + "type": ["integer", "string"], "format": "int32", "default": 10 } @@ -232,10 +211,7 @@ }, "/api/context/graph-nodes/{nodeId}/neighbors": { "get": { - "tags": [ - "Context", - "Graph" - ], + "tags": ["Context", "Graph"], "summary": "Get node neighbors", "description": "Retrieves the immediate neighbors and edges for a specific context node.", "operationId": "Neighbors", @@ -265,9 +241,7 @@ }, "/api/context/link": { "post": { - "tags": [ - "Context" - ], + "tags": ["Context"], "summary": "Link analysis context", "description": "Links the current analysis context using the provided linkers.", "operationId": "Link", @@ -300,9 +274,7 @@ }, "/api/context/load": { "post": { - "tags": [ - "Context" - ], + "tags": ["Context"], "summary": "Load data into analysis context", "description": "Loads data from files into the current analysis context using the provided loaders.", "operationId": "Load", @@ -335,9 +307,7 @@ }, "/api/analyses": { "post": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Run analysis", "description": "Starts the execution of an analysis script on the analysis service.", "operationId": "Analyses", @@ -379,11 +349,7 @@ "components": { "schemas": { "ContextGraphEdge": { - "required": [ - "source", - "target", - "label" - ], + "required": ["source", "target", "label"], "type": "object", "properties": { "source": { @@ -398,13 +364,7 @@ } }, "ContextGraphNode": { - "required": [ - "id", - "label", - "type", - "loader", - "properties" - ], + "required": ["id", "label", "type", "loader", "properties"], "type": "object", "properties": { "id": { @@ -417,10 +377,7 @@ "type": "string" }, "loader": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "properties": { "type": "object" @@ -428,10 +385,7 @@ } }, "ContextGraphResponse": { - "required": [ - "nodes", - "edges" - ], + "required": ["nodes", "edges"], "type": "object", "properties": { "nodes": { @@ -449,10 +403,7 @@ } }, "ContextSlice": { - "required": [ - "model", - "pluginIds" - ], + "required": ["model", "pluginIds"], "type": "object", "properties": { "model": { @@ -467,32 +418,22 @@ } }, "GenerateClassesRequest": { - "required": [ - "languages" - ], + "required": ["languages"], "type": "object", "properties": { "languages": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "type": "string" } }, "transferFormat": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] } } }, "GetContextResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -504,9 +445,7 @@ } }, "GetInstalledPluginsResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -521,37 +460,21 @@ "type": "object", "properties": { "type": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "title": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "status": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "null", - "integer", - "string" - ], + "type": ["null", "integer", "string"], "format": "int32" }, "detail": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "instance": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "errors": { "type": "object", @@ -565,12 +488,7 @@ } }, "InstalledPlugin": { - "required": [ - "folderPath", - "id", - "version", - "manifest" - ], + "required": ["folderPath", "id", "version", "manifest"], "type": "object", "properties": { "folderPath": { @@ -588,9 +506,7 @@ } }, "InstalledPluginExtensionPointOutletBase": { - "required": [ - "type" - ], + "required": ["type"], "type": "object", "anyOf": [ { @@ -614,18 +530,10 @@ } }, "InstalledPluginExtensionPointOutletBaseInstalledPluginFilePreviewerOutlet": { - "required": [ - "exposedModule", - "label", - "componentName", - "icon", - "supportedFileExtensions" - ], + "required": ["exposedModule", "label", "componentName", "icon", "supportedFileExtensions"], "properties": { "type": { - "enum": [ - "file-previewer" - ], + "enum": ["file-previewer"], "type": "string" }, "exposedModule": { @@ -635,22 +543,13 @@ "type": "string" }, "componentName": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "icon": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "supportedFileExtensions": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "type": "string" } @@ -659,19 +558,10 @@ "description": "Represents a component for file previewer of output results." }, "InstalledPluginExtensionPointOutletBaseInstalledPluginSidePanelOutlet": { - "required": [ - "exposedModule", - "label", - "path", - "nested", - "componentName", - "icon" - ], + "required": ["exposedModule", "label", "path", "nested", "componentName", "icon"], "properties": { "type": { - "enum": [ - "side-panel" - ], + "enum": ["side-panel"], "type": "string" }, "exposedModule": { @@ -684,16 +574,10 @@ "type": "string" }, "nested": { - "type": [ - "null", - "boolean" - ] + "type": ["null", "boolean"] }, "componentName": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "icon": { "type": "string" @@ -702,18 +586,10 @@ "description": "Represents an element from the Side Hamburger Panel with route." }, "InstalledPluginExtensionPointOutletBaseInstalledPluginTopNavigationBarOutlet": { - "required": [ - "exposedModule", - "label", - "path", - "nested", - "componentName" - ], + "required": ["exposedModule", "label", "path", "nested", "componentName"], "properties": { "type": { - "enum": [ - "top-navigation-bar" - ], + "enum": ["top-navigation-bar"], "type": "string" }, "exposedModule": { @@ -726,28 +602,16 @@ "type": "string" }, "nested": { - "type": [ - "null", - "boolean" - ] + "type": ["null", "boolean"] }, "componentName": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] } }, "description": "Represents an element from the Top Navigation Bar with route." }, "InstalledPluginManifest": { - "required": [ - "apiVersion", - "name", - "description", - "author", - "extensionPoints" - ], + "required": ["apiVersion", "name", "description", "author", "extensionPoints"], "type": "object", "properties": { "apiVersion": { @@ -757,16 +621,10 @@ "type": "string" }, "description": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "author": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "extensionPoints": { "type": "array", @@ -777,10 +635,7 @@ } }, "InstallPluginCommand": { - "required": [ - "pluginId", - "version" - ], + "required": ["pluginId", "version"], "type": "object", "properties": { "pluginId": { @@ -792,9 +647,7 @@ } }, "LinkContextCommand": { - "required": [ - "linkerIds" - ], + "required": ["linkerIds"], "type": "object", "properties": { "linkerIds": { @@ -806,9 +659,7 @@ } }, "LoadContextCommand": { - "required": [ - "filesToLoad" - ], + "required": ["filesToLoad"], "type": "object", "properties": { "filesToLoad": { @@ -823,9 +674,7 @@ } }, "PluginExtensionPoint": { - "required": [ - "kind" - ], + "required": ["kind"], "type": "object", "anyOf": [ { @@ -865,15 +714,10 @@ } }, "PluginExtensionPointHelperFunctionsPluginExtensionPoint": { - "required": [ - "entryPoint", - "version" - ], + "required": ["entryPoint", "version"], "properties": { "kind": { - "enum": [ - "HelperFunctions" - ], + "enum": ["HelperFunctions"], "type": "string" }, "entryPoint": { @@ -886,15 +730,10 @@ "description": "Represents a helper functions plugin extension point." }, "PluginExtensionPointLinkerPluginExtensionPoint": { - "required": [ - "entryPoint", - "version" - ], + "required": ["entryPoint", "version"], "properties": { "kind": { - "enum": [ - "Linker" - ], + "enum": ["Linker"], "type": "string" }, "entryPoint": { @@ -907,15 +746,10 @@ "description": "Represents a linker plugin extension point." }, "PluginExtensionPointLoaderPluginExtensionPoint": { - "required": [ - "entryPoint", - "version" - ], + "required": ["entryPoint", "version"], "properties": { "kind": { - "enum": [ - "Loader" - ], + "enum": ["Loader"], "type": "string" }, "entryPoint": { @@ -928,15 +762,10 @@ "description": "Represents a loader plugin extension point." }, "PluginExtensionPointNestedPluginExtensionPoint": { - "required": [ - "entryPoint", - "version" - ], + "required": ["entryPoint", "version"], "properties": { "kind": { - "enum": [ - "Plugin" - ], + "enum": ["Plugin"], "type": "string" }, "entryPoint": { @@ -949,17 +778,10 @@ "description": "Represents a plugin from a bundle." }, "PluginExtensionPointScriptGeneratorPluginExtensionPoint": { - "required": [ - "language", - "extension", - "entryPoint", - "version" - ], + "required": ["language", "extension", "entryPoint", "version"], "properties": { "kind": { - "enum": [ - "ScriptGenerator" - ], + "enum": ["ScriptGenerator"], "type": "string" }, "language": { @@ -978,17 +800,10 @@ "description": "Represents a script generator plugin extension point." }, "PluginExtensionPointScriptRunnerPluginExtensionPoint": { - "required": [ - "language", - "extension", - "entryPoint", - "version" - ], + "required": ["language", "extension", "entryPoint", "version"], "properties": { "kind": { - "enum": [ - "ScriptRunner" - ], + "enum": ["ScriptRunner"], "type": "string" }, "language": { @@ -1007,18 +822,10 @@ "description": "Represents a script runner plugin extension point." }, "PluginExtensionPointUiPluginExtensionPoint": { - "required": [ - "remoteName", - "remoteEntry", - "outlets", - "entryPoint", - "version" - ], + "required": ["remoteName", "remoteEntry", "outlets", "entryPoint", "version"], "properties": { "kind": { - "enum": [ - "UI" - ], + "enum": ["UI"], "type": "string" }, "remoteName": { @@ -1046,45 +853,26 @@ "type": "object", "properties": { "type": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "title": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "status": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "null", - "integer", - "string" - ], + "type": ["null", "integer", "string"], "format": "int32" }, "detail": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "instance": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] } } }, "RunAnalysisCommand": { - "required": [ - "projectId", - "scriptId" - ], + "required": ["projectId", "scriptId"], "type": "object", "properties": { "projectId": { @@ -1097,13 +885,7 @@ "description": "Command used to run an analysis script on the analysis service." }, "RunAnalysisResponse": { - "required": [ - "id", - "projectId", - "scriptId", - "status", - "creationDate" - ], + "required": ["id", "projectId", "scriptId", "status", "creationDate"], "type": "object", "properties": { "id": { diff --git a/docs/public/gateway_swagger.json b/docs/public/gateway_swagger.json index cc26373b..b69fa070 100644 --- a/docs/public/gateway_swagger.json +++ b/docs/public/gateway_swagger.json @@ -13,9 +13,7 @@ "paths": { "/api/projects": { "post": { - "tags": [ - "Projects" - ], + "tags": ["Projects"], "summary": "Create a new project", "description": "Creates a new project with the specified name and description.", "requestBody": { @@ -62,9 +60,7 @@ } }, "get": { - "tags": [ - "Projects" - ], + "tags": ["Projects"], "summary": "Get all projects", "description": "Retrieves a list of all existing projects with their basic details.", "responses": { @@ -83,9 +79,7 @@ }, "/api/projects/{projectId}": { "delete": { - "tags": [ - "Projects" - ], + "tags": ["Projects"], "summary": "Delete a project", "description": "Deletes a project and all its associated data, including scripts and artifacts.", "parameters": [ @@ -105,9 +99,7 @@ } }, "get": { - "tags": [ - "Projects" - ], + "tags": ["Projects"], "summary": "Get project by ID", "description": "Retrieves detailed information about a specific project by its unique identifier.", "parameters": [ @@ -146,9 +138,7 @@ }, "/api/projects/{projectId}/scripts": { "post": { - "tags": [ - "Scripts" - ], + "tags": ["Scripts"], "summary": "Create a new script", "description": "Creates a new script within the specified project.", "parameters": [ @@ -215,9 +205,7 @@ } }, "get": { - "tags": [ - "Scripts" - ], + "tags": ["Scripts"], "summary": "Get all project scripts", "description": "Retrieves a list of all scripts available in the specified project.", "parameters": [ @@ -246,9 +234,7 @@ }, "/api/projects/{projectId}/files/{fileId}": { "delete": { - "tags": [ - "ProjectStructure" - ], + "tags": ["ProjectStructure"], "summary": "Delete a project structure node", "description": "Deletes a file or directory (node) from the project structure.", "parameters": [ @@ -288,9 +274,7 @@ }, "/api/projects/{projectId}/scripts/{scriptId}": { "get": { - "tags": [ - "Scripts" - ], + "tags": ["Scripts"], "summary": "Get project script by ID", "description": "Retrieves metadata about a specific project script.", "parameters": [ @@ -335,9 +319,7 @@ } }, "patch": { - "tags": [ - "Scripts" - ], + "tags": ["Scripts"], "summary": "Update project script metadata", "description": "Updates the metadata (name, parameters) of a specific project script.", "parameters": [ @@ -404,9 +386,7 @@ }, "/api/projects/{projectId}/scripts/{scriptId}/content": { "get": { - "tags": [ - "Scripts" - ], + "tags": ["Scripts"], "summary": "Get project script content", "description": "Retrieves the actual code content of a project script.", "operationId": "GetScriptContent", @@ -452,9 +432,7 @@ } }, "put": { - "tags": [ - "Scripts" - ], + "tags": ["Scripts"], "summary": "Update project script content", "description": "Updates the actual code content of a specific project script.", "parameters": [ @@ -504,9 +482,7 @@ }, "/api/projects/{projectId}/files": { "get": { - "tags": [ - "ProjectStructure" - ], + "tags": ["ProjectStructure"], "summary": "Get project files", "description": "Retrieves a paginated list of files and directories within the specified project.", "parameters": [ @@ -530,10 +506,7 @@ "in": "query", "schema": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], + "type": ["integer", "string"], "format": "int32", "default": 0 } @@ -543,10 +516,7 @@ "in": "query", "schema": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], + "type": ["integer", "string"], "format": "int32", "default": 50 } @@ -588,9 +558,7 @@ }, "/api/projects/{projectId}/structure/available-script-types": { "get": { - "tags": [ - "ProjectStructure" - ], + "tags": ["ProjectStructure"], "summary": "Get available script types", "description": "Retrieves a list of all script languages and types supported by the project.", "parameters": [ @@ -619,9 +587,7 @@ }, "/api/plugins": { "get": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Get all available plugins", "description": "Retrieves a list of all available plugins from the marketplace.", "responses": { @@ -640,9 +606,7 @@ }, "/api/plugins/{id}": { "get": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Get plugin by ID", "description": "Retrieves detailed information about a specific plugin from the marketplace by its unique identifier.", "parameters": [ @@ -681,9 +645,7 @@ }, "/api/projects/{projectId}/plugins": { "get": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Get installed plugins for a project", "description": "Retrieves a list of all plugins currently installed in the specified project.", "parameters": [ @@ -720,9 +682,7 @@ } }, "post": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Upload and install a plugin", "description": "Uploads a plugin ZIP file and installs it into the project.", "parameters": [ @@ -739,9 +699,7 @@ "content": { "multipart/form-data": { "schema": { - "required": [ - "file" - ], + "required": ["file"], "type": "object", "properties": { "file": { @@ -799,9 +757,7 @@ }, "/api/projects/{projectId}/plugins/{pluginId}": { "get": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Get installed plugin details", "description": "Retrieves detailed information about a specific plugin installed in a project.", "parameters": [ @@ -846,9 +802,7 @@ } }, "put": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Install a plugin from marketplace", "description": "Installs a specific version of a plugin from the marketplace into the project.", "parameters": [ @@ -904,9 +858,7 @@ } }, "delete": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Uninstall a plugin from a project", "description": "Uninstalls a specific plugin version from the specified project.", "parameters": [ @@ -954,9 +906,7 @@ }, "/api/plugins/gateway": { "get": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Get gateway plugins", "description": "Retrieves a list of all plugins installed at the gateway level.", "parameters": [ @@ -982,9 +932,7 @@ } }, "post": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Install gateway plugin", "description": "Installs a new plugin at the gateway level.", "requestBody": { @@ -1006,9 +954,7 @@ }, "/api/plugins/gateway/{pluginId}": { "delete": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Uninstall gateway plugin", "description": "Uninstalls a plugin from the gateway level.", "parameters": [ @@ -1038,9 +984,7 @@ }, "/api/plugins/gateway/ui/manifest": { "get": { - "tags": [ - "Plugins" - ], + "tags": ["Plugins"], "summary": "Get the manifest for UI plugins", "description": "Retrieves a map with the installed UI plugin remotes and the associated remoteEntry.js file.", "responses": { @@ -1062,9 +1006,7 @@ }, "/api/projects/{projectId}/loaders/{loaderId}/files": { "put": { - "tags": [ - "Loaders" - ], + "tags": ["Loaders"], "summary": "Upload files for a loader", "description": "Uploads one or more files to be used by a specific loader in the project.", "parameters": [ @@ -1089,9 +1031,7 @@ "content": { "multipart/form-data": { "schema": { - "required": [ - "files" - ], + "required": ["files"], "type": "object", "properties": { "files": { @@ -1129,9 +1069,7 @@ }, "/api/projects/{projectId}/instances": { "post": { - "tags": [ - "Instances" - ], + "tags": ["Instances"], "summary": "Add a new project instance", "description": "Allocates and adds a new execution instance for the specified project.", "parameters": [ @@ -1168,9 +1106,7 @@ } }, "get": { - "tags": [ - "Instances" - ], + "tags": ["Instances"], "summary": "Get all project instances", "description": "Retrieves a list of all instances associated with the specified project.", "parameters": [ @@ -1199,9 +1135,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}": { "get": { - "tags": [ - "Instances" - ], + "tags": ["Instances"], "summary": "Get project instance by ID", "description": "Retrieves detailed information about a specific project instance.", "parameters": [ @@ -1246,9 +1180,7 @@ } }, "delete": { - "tags": [ - "Instances" - ], + "tags": ["Instances"], "summary": "Remove a project instance", "description": "Deallocates and removes a specific project instance.", "parameters": [ @@ -1288,10 +1220,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/linkers": { "get": { - "tags": [ - "Instances", - "Context" - ], + "tags": ["Instances", "Context"], "summary": "Get available linkers for an instance", "description": "Retrieves a list of all linkers available for the specified project instance.", "parameters": [ @@ -1328,10 +1257,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/loaders": { "get": { - "tags": [ - "Instances", - "Context" - ], + "tags": ["Instances", "Context"], "summary": "Get available loaders for an instance", "description": "Retrieves a list of all loaders available for the specified project instance.", "parameters": [ @@ -1368,10 +1294,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/context": { "get": { - "tags": [ - "Instances", - "Context" - ], + "tags": ["Instances", "Context"], "summary": "Get current instance context", "description": "Retrieves the current data context for the specified project instance.", "parameters": [ @@ -1418,11 +1341,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/context/graph": { "get": { - "tags": [ - "Instances", - "Context", - "Graph" - ], + "tags": ["Instances", "Context", "Graph"], "summary": "Search context nodes", "description": "Searches for context nodes based on a query string.", "parameters": [ @@ -1454,10 +1373,7 @@ "in": "query", "schema": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], + "type": ["integer", "string"], "format": "int32", "default": 0 } @@ -1467,10 +1383,7 @@ "in": "query", "schema": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], + "type": ["integer", "string"], "format": "int32", "default": 10 } @@ -1502,11 +1415,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/context/graph/neighbors": { "get": { - "tags": [ - "Instances", - "Context", - "Graph" - ], + "tags": ["Instances", "Context", "Graph"], "summary": "Get node neighbors", "description": "Retrieves the immediate neighbors and edges for a specific context node.", "parameters": [ @@ -1561,10 +1470,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/context/clear": { "post": { - "tags": [ - "Instances", - "Context" - ], + "tags": ["Instances", "Context"], "summary": "Clear instance context", "description": "Clears all loaded data from the current context of the specified project instance.", "parameters": [ @@ -1604,10 +1510,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/context/generate-classes": { "post": { - "tags": [ - "Instances", - "Context" - ], + "tags": ["Instances", "Context"], "summary": "Generate classes for instance context", "description": "Generates script classes based on the current data context for the specified project instance and returns them as a stream.", "parameters": [ @@ -1654,10 +1557,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/context/link": { "post": { - "tags": [ - "Instances", - "Context" - ], + "tags": ["Instances", "Context"], "summary": "Link instance context", "description": "Links the data context of the specified project instance using the provided linkers.", "parameters": [ @@ -1717,10 +1617,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/context/load": { "post": { - "tags": [ - "Instances", - "Context" - ], + "tags": ["Instances", "Context"], "summary": "Load instance context", "description": "Loads data into the context of the specified project instance using the provided loaders.", "parameters": [ @@ -1780,10 +1677,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/context/reload": { "post": { - "tags": [ - "Instances", - "Context" - ], + "tags": ["Instances", "Context"], "summary": "Reload instance context", "description": "Reloads the data context for the specified project instance, refreshing all linked and loaded data.", "parameters": [ @@ -1823,9 +1717,7 @@ }, "/api/projects/{projectId}/analyses/{analysisId}": { "delete": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Delete analysis", "description": "Deletes a specific analysis and all its associated artifacts.", "parameters": [ @@ -1853,9 +1745,7 @@ } }, "get": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Get analysis status by ID", "description": "Retrieves the current status and details of a specific analysis.", "parameters": [ @@ -1912,9 +1802,7 @@ }, "/api/projects/{projectId}/analyses/{analysisId}/results/files/{fileId}": { "get": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Download individual analysis result file", "description": "Downloads a specific file generated as a result of an analysis.", "parameters": [ @@ -1959,9 +1847,7 @@ }, "/api/projects/{projectId}/analyses/{analysisId}/results/files/download": { "get": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Download all analysis result files", "description": "Downloads a ZIP archive containing all files generated as a result of an analysis.", "parameters": [ @@ -1998,9 +1884,7 @@ }, "/api/projects/{projectId}/analyses/{analysisId}/results/console": { "get": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Get console analysis results", "description": "Retrieves the console output generated during the analysis.", "parameters": [ @@ -2047,9 +1931,7 @@ }, "/api/projects/{projectId}/analyses/{analysisId}/results/errors": { "get": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Get analysis error results", "description": "Retrieves a list of errors that occurred during the analysis execution.", "parameters": [ @@ -2096,9 +1978,7 @@ }, "/api/projects/{projectId}/analyses/{analysisId}/results/files": { "get": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Get analysis file results", "description": "Retrieves a list of files generated as a result of the analysis.", "parameters": [ @@ -2145,9 +2025,7 @@ }, "/api/projects/{projectId}/analyses/{analysisId}/scripts/{scriptId}/content": { "get": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Get analysis script content", "description": "Retrieves the actual code content of a script used in a specific analysis.", "operationId": "GetAnalysisScriptContent", @@ -2203,9 +2081,7 @@ }, "/api/projects/{projectId}/analyses/{analysisId}/scripts/{scriptId}": { "get": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Get analysis script metadata", "description": "Retrieves metadata about a script used in a specific analysis, such as its name and type.", "parameters": [ @@ -2260,9 +2136,7 @@ }, "/api/projects/{projectId}/analyses": { "get": { - "tags": [ - "Analysis" - ], + "tags": ["Analysis"], "summary": "Get all analyses for a project", "description": "Retrieves a list of all analyses performed within the specified project.", "parameters": [ @@ -2309,10 +2183,7 @@ }, "/api/projects/{projectId}/instances/{instanceId}/analyses": { "post": { - "tags": [ - "Instances", - "Analysis" - ], + "tags": ["Instances", "Analysis"], "summary": "Trigger a new analysis", "description": "Triggers a new analysis for a specific project instance using a given script.", "parameters": [ @@ -2374,9 +2245,7 @@ "components": { "schemas": { "AllAvailablePluginsResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2388,9 +2257,7 @@ } }, "AnalysisError": { - "required": [ - "message" - ], + "required": ["message"], "type": "object", "properties": { "message": { @@ -2424,27 +2291,18 @@ "type": "string" }, "scriptFileId": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "creationDate": { "type": "string", "format": "date-time" }, "finishedDate": { - "type": [ - "null", - "string" - ], + "type": ["null", "string"], "format": "date-time" }, "errors": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "$ref": "#/components/schemas/AnalysisError" } @@ -2452,9 +2310,7 @@ } }, "AnalysisListResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2466,11 +2322,7 @@ } }, "AnalysisResultRunError": { - "required": [ - "title", - "message", - "severity" - ], + "required": ["title", "message", "severity"], "type": "object", "properties": { "title": { @@ -2485,10 +2337,7 @@ } }, "BundleItem": { - "required": [ - "id", - "name" - ], + "required": ["id", "name"], "type": "object", "properties": { "id": { @@ -2500,11 +2349,7 @@ } }, "ContextGraphEdge": { - "required": [ - "source", - "target", - "label" - ], + "required": ["source", "target", "label"], "type": "object", "properties": { "source": { @@ -2519,13 +2364,7 @@ } }, "ContextGraphNode": { - "required": [ - "id", - "label", - "type", - "loader", - "properties" - ], + "required": ["id", "label", "type", "loader", "properties"], "type": "object", "properties": { "id": { @@ -2538,10 +2377,7 @@ "type": "string" }, "loader": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "properties": { "type": "object" @@ -2549,10 +2385,7 @@ } }, "ContextGraphResponse": { - "required": [ - "nodes", - "edges" - ], + "required": ["nodes", "edges"], "type": "object", "properties": { "nodes": { @@ -2570,10 +2403,7 @@ } }, "CreateProjectCommand": { - "required": [ - "id", - "name" - ], + "required": ["id", "name"], "type": "object", "properties": { "id": { @@ -2586,11 +2416,7 @@ "description": "Command used to create a new project." }, "CreateProjectResponse": { - "required": [ - "id", - "name", - "creationDate" - ], + "required": ["id", "name", "creationDate"], "type": "object", "properties": { "id": { @@ -2606,11 +2432,7 @@ } }, "CreateScriptCommand": { - "required": [ - "path", - "language", - "parameters" - ], + "required": ["path", "language", "parameters"], "type": "object", "properties": { "path": { @@ -2620,10 +2442,7 @@ "type": "string" }, "parameters": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "$ref": "#/components/schemas/ScriptParameter" } @@ -2631,33 +2450,22 @@ } }, "ExtensionPoint": { - "required": [ - "kind" - ], + "required": ["kind"], "type": "object", "properties": { "kind": { "type": "string" }, "language": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "extension": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] } } }, "FileData": { - "required": [ - "id", - "name" - ], + "required": ["id", "name"], "type": "object", "properties": { "id": { @@ -2669,9 +2477,7 @@ } }, "GatewayPluginsResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2683,9 +2489,7 @@ } }, "GetAnalysisResultConsole": { - "required": [ - "content" - ], + "required": ["content"], "type": "object", "properties": { "content": { @@ -2694,11 +2498,7 @@ } }, "GetAnalysisResultFile": { - "required": [ - "id", - "name", - "type" - ], + "required": ["id", "name", "type"], "type": "object", "properties": { "id": { @@ -2713,9 +2513,7 @@ } }, "GetAnalysisResultFileList": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2727,9 +2525,7 @@ } }, "GetAnalysisResultRunErrors": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2741,9 +2537,7 @@ } }, "GetAvailableScriptTypesResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2755,9 +2549,7 @@ } }, "GetLinkersResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2769,9 +2561,7 @@ } }, "GetLoadersResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2783,9 +2573,7 @@ } }, "GetProjectContextResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2797,12 +2585,7 @@ } }, "GetProjectFilesResponse": { - "required": [ - "data", - "totalCount", - "offset", - "limit" - ], + "required": ["data", "totalCount", "offset", "limit"], "type": "object", "properties": { "data": { @@ -2813,26 +2596,17 @@ }, "totalCount": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], + "type": ["integer", "string"], "format": "int64" }, "offset": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], + "type": ["integer", "string"], "format": "int32" }, "limit": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], + "type": ["integer", "string"], "format": "int32" }, "hasNextPage": { @@ -2841,9 +2615,7 @@ } }, "GetProjectInstancesListResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2855,9 +2627,7 @@ } }, "GetProjectListResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2869,9 +2639,7 @@ } }, "GetScriptDataResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -2886,37 +2654,21 @@ "type": "object", "properties": { "type": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "title": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "status": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "null", - "integer", - "string" - ], + "type": ["null", "integer", "string"], "format": "int32" }, "detail": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "instance": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "errors": { "type": "object", @@ -2940,11 +2692,7 @@ } }, "InstalledGatewayPlugin": { - "required": [ - "id", - "version", - "extensionPoints" - ], + "required": ["id", "version", "extensionPoints"], "type": "object", "properties": { "id": { @@ -2963,34 +2711,20 @@ "description": "Represents an installed gateway plugin with its ID and version." }, "InstalledGatewayPluginExtensionPoint": { - "required": [ - "kind", - "remoteName", - "remoteEntry", - "outlets" - ], + "required": ["kind", "remoteName", "remoteEntry", "outlets"], "type": "object", "properties": { "kind": { "type": "string" }, "remoteName": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "remoteEntry": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "outlets": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "$ref": "#/components/schemas/InstalledGatewayPluginExtensionPointOutletBase" } @@ -2999,9 +2733,7 @@ "description": "Represents the extension points of an installed gateway plugin." }, "InstalledGatewayPluginExtensionPointOutletBase": { - "required": [ - "type" - ], + "required": ["type"], "type": "object", "anyOf": [ { @@ -3025,18 +2757,10 @@ } }, "InstalledGatewayPluginExtensionPointOutletBaseInstalledGatewayPluginFilePreviewerOutlet": { - "required": [ - "exposedModule", - "label", - "componentName", - "icon", - "supportedFileExtensions" - ], + "required": ["exposedModule", "label", "componentName", "icon", "supportedFileExtensions"], "properties": { "type": { - "enum": [ - "file-previewer" - ], + "enum": ["file-previewer"], "type": "string" }, "exposedModule": { @@ -3046,22 +2770,13 @@ "type": "string" }, "componentName": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "icon": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "supportedFileExtensions": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "type": "string" } @@ -3070,19 +2785,10 @@ "description": "Represents a component for file previewer of output results." }, "InstalledGatewayPluginExtensionPointOutletBaseInstalledGatewayPluginSidePanelOutlet": { - "required": [ - "exposedModule", - "label", - "path", - "nested", - "componentName", - "icon" - ], + "required": ["exposedModule", "label", "path", "nested", "componentName", "icon"], "properties": { "type": { - "enum": [ - "side-panel" - ], + "enum": ["side-panel"], "type": "string" }, "exposedModule": { @@ -3095,16 +2801,10 @@ "type": "string" }, "nested": { - "type": [ - "null", - "boolean" - ] + "type": ["null", "boolean"] }, "componentName": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "icon": { "type": "string" @@ -3113,18 +2813,10 @@ "description": "Represents an element from the Side Hamburger Panel with route." }, "InstalledGatewayPluginExtensionPointOutletBaseInstalledGatewayPluginTopNavigationBarOutlet": { - "required": [ - "exposedModule", - "label", - "path", - "nested", - "componentName" - ], + "required": ["exposedModule", "label", "path", "nested", "componentName"], "properties": { "type": { - "enum": [ - "top-navigation-bar" - ], + "enum": ["top-navigation-bar"], "type": "string" }, "exposedModule": { @@ -3137,25 +2829,16 @@ "type": "string" }, "nested": { - "type": [ - "null", - "boolean" - ] + "type": ["null", "boolean"] }, "componentName": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] } }, "description": "Represents an element from the Top Navigation Bar with route." }, "InstalledPlugin": { - "required": [ - "id", - "version" - ], + "required": ["id", "version"], "type": "object", "properties": { "id": { @@ -3168,9 +2851,7 @@ "description": "Represents an installed plugin with its ID and version." }, "InstalledPluginsResponse": { - "required": [ - "data" - ], + "required": ["data"], "type": "object", "properties": { "data": { @@ -3182,10 +2863,7 @@ } }, "InstallGatewayPluginRequest": { - "required": [ - "id", - "version" - ], + "required": ["id", "version"], "type": "object", "properties": { "id": { @@ -3197,9 +2875,7 @@ } }, "LinkContextCommand": { - "required": [ - "linkerIds" - ], + "required": ["linkerIds"], "type": "object", "properties": { "linkerIds": { @@ -3211,10 +2887,7 @@ } }, "Linker": { - "required": [ - "id", - "name" - ], + "required": ["id", "name"], "type": "object", "properties": { "id": { @@ -3226,9 +2899,7 @@ } }, "LoadContextCommand": { - "required": [ - "loaderIds" - ], + "required": ["loaderIds"], "type": "object", "properties": { "loaderIds": { @@ -3240,10 +2911,7 @@ } }, "Loader": { - "required": [ - "id", - "name" - ], + "required": ["id", "name"], "type": "object", "properties": { "id": { @@ -3255,14 +2923,7 @@ } }, "MarketplacePlugin": { - "required": [ - "id", - "name", - "type", - "description", - "authors", - "versions" - ], + "required": ["id", "name", "type", "description", "authors", "versions"], "type": "object", "properties": { "id": { @@ -3292,14 +2953,7 @@ } }, "MarketplacePluginWithDetails": { - "required": [ - "id", - "name", - "type", - "description", - "authors", - "versions" - ], + "required": ["id", "name", "type", "description", "authors", "versions"], "type": "object", "properties": { "id": { @@ -3327,61 +2981,37 @@ } }, "bundleItems": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "$ref": "#/components/schemas/BundleItem" } }, "sourceCode": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "manifest": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "site": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "license": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "tags": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "type": "string" } }, "technologies": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "type": "string" } }, "extensionPoints": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "$ref": "#/components/schemas/ExtensionPoint" } @@ -3389,11 +3019,7 @@ } }, "PluginVersion": { - "required": [ - "url", - "version", - "manifestUrl" - ], + "required": ["url", "version", "manifestUrl"], "type": "object", "properties": { "url": { @@ -3411,46 +3037,26 @@ "type": "object", "properties": { "type": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "title": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "status": { "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "null", - "integer", - "string" - ], + "type": ["null", "integer", "string"], "format": "int32" }, "detail": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "instance": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] } } }, "Project": { - "required": [ - "id", - "name", - "creationDate" - ], + "required": ["id", "name", "creationDate"], "type": "object", "properties": { "id": { @@ -3467,33 +3073,22 @@ "description": "Represents basic project information." }, "ProjectContextGenerateClassesRequest": { - "required": [ - "languages" - ], + "required": ["languages"], "type": "object", "properties": { "languages": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "type": "string" } }, "transferFormat": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] } } }, "ProjectContextSlice": { - "required": [ - "model", - "pluginIds" - ], + "required": ["model", "pluginIds"], "type": "object", "properties": { "model": { @@ -3508,14 +3103,7 @@ } }, "ProjectDetails": { - "required": [ - "id", - "name", - "creationDate", - "savedFiles", - "loadedFiles", - "linkers" - ], + "required": ["id", "name", "creationDate", "savedFiles", "loadedFiles", "linkers"], "type": "object", "properties": { "id": { @@ -3556,13 +3144,7 @@ "description": "Represents detailed project information, including saved and loaded files." }, "ProjectFileNode": { - "required": [ - "id", - "name", - "path", - "type", - "hasChildren" - ], + "required": ["id", "name", "path", "type", "hasChildren"], "type": "object", "properties": { "id": { @@ -3583,11 +3165,7 @@ } }, "ProjectInstance": { - "required": [ - "id", - "creationDate", - "status" - ], + "required": ["id", "creationDate", "status"], "type": "object", "properties": { "id": { @@ -3604,13 +3182,7 @@ "description": "Represents an instance of a project execution." }, "ScriptData": { - "required": [ - "id", - "name", - "path", - "scriptLanguage", - "parameters" - ], + "required": ["id", "name", "path", "scriptLanguage", "parameters"], "type": "object", "properties": { "id": { @@ -3634,10 +3206,7 @@ } }, "ScriptLanguage": { - "required": [ - "name", - "extension" - ], + "required": ["name", "extension"], "type": "object", "properties": { "name": { @@ -3649,11 +3218,7 @@ } }, "ScriptParameter": { - "required": [ - "name", - "type", - "value" - ], + "required": ["name", "type", "value"], "type": "object", "properties": { "name": { @@ -3662,7 +3227,7 @@ "type": { "type": "string" }, - "value": { } + "value": {} } }, "Stream": { @@ -3670,9 +3235,7 @@ "format": "binary" }, "TriggerAnalysisCommand": { - "required": [ - "scriptId" - ], + "required": ["scriptId"], "type": "object", "properties": { "scriptId": { @@ -3682,23 +3245,14 @@ "description": "Command used to trigger a script analysis." }, "UpdateScriptCommand": { - "required": [ - "name", - "parameters" - ], + "required": ["name", "parameters"], "type": "object", "properties": { "name": { - "type": [ - "null", - "string" - ] + "type": ["null", "string"] }, "parameters": { - "type": [ - "null", - "array" - ], + "type": ["null", "array"], "items": { "$ref": "#/components/schemas/ScriptParameter" } @@ -3706,10 +3260,7 @@ } }, "UploadLoaderFilesResponse": { - "required": [ - "loaderId", - "fileNames" - ], + "required": ["loaderId", "fileNames"], "type": "object", "properties": { "loaderId": {