{
  "openapi": "3.0.1",
  "info": {
    "title": "ZAST.AI API",
    "version": "v1.0.0",
    "description": "# ZAST.AI API Documentation\n\nWelcome to the ZAST.AI API documentation. This API allows you to interact with our security scanning and analysis services programmatically.\n\n## Features\n\n- **Task Management**: Create, manage, and track security scan tasks.\n- **Vulnerability Analysis**: Retrieve detailed vulnerability reports and exploit chains.\n- **SCA**: Software Composition Analysis for dependency security.\n- **Network Diagnostics**: Tools for network connectivity and security checks.\n\n## Getting Started\n\nThis section describes how third-party applications can integrate with the Zast Global Authentication System through the standard OAuth 2.0 Authorization Code Flow.\n\n### 0. Preparation\n\nBefore you begin, you must submit an application to **support@zast.ai** and provide the necessary information, including your `redirect_uri`.\n\n### 1. Endpoints\n\n| Configuration | Value |\n| :--- | :--- |\n| **Auth URL** | `https://clerk.zast.ai/oauth/authorize` |\n| **Token URL** | `https://clerk.zast.ai/oauth/token` |\n| **User Info URL** | `https://clerk.zast.ai/oauth/userinfo` |\n\n### 2. Authorization Flow\n\n#### Step 1: Obtain User Authorization\n\nRedirect users to: `GET https://clerk.zast.ai/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_CALLBACK_URI&scope=profile%20email&state=12345678`\n\n#### Step 2: Authorization Callback\n\nReceive code: `YOUR_CALLBACK_URI?code=AUTHORIZATION_CODE&state=12345678`\n\n#### Step 3: Exchange Code for Token\n\n`POST https://clerk.zast.ai/oauth/token` with `application/x-www-form-urlencoded` body: `grant_type=authorization_code`, `code`, `client_id`, `client_secret`, `redirect_uri`.\n\n#### Step 4: Refresh Token\n\n`POST https://clerk.zast.ai/oauth/token` with `grant_type=refresh_token`, `refresh_token`, `client_id`, `client_secret`.\n\n### 3. API Usage\n\nHeader: `Authorization: Bearer <YOUR_ACCESS_TOKEN>`\n\n## Workflow: Creating a Code Scan Task\n\nFollow these steps to programmatically create and run a security scan, mirroring the process in the ZAST.AI User Manual.\n\n### Step 1: Upload Artifacts\nFirst, upload your application's build artifact (e.g., `.jar`, `.war`) and optional source code.\n- **Endpoint**: `POST /oxpecker/api/v1/files/upload`\n- **Action**: Upload your file.\n- **Result**: Save the returned `sha256` hash. You will need this as the `primarySourceCode` when creating the task.\n\n### Step 2: Network Diagnostics (Recommended)\nEnsure that ZAST.AI can access your deployed service URL.\n- **Endpoint**: `POST /oxpecker/api/v1/network-diagnostics`\n- **Action**: Initiate a diagnostic check for your `sandboxHomePageUrl`.\n- **Poll Status**: Use `GET /oxpecker/api/v1/network-diagnostics/{id}/next-stage` to check if the connection is successful.\n\n### Step 3: Domain Ownership Verification\nVerify that you own the domain you intend to scan.\n1. **Get Token**: Call `GET /oxpecker/api/v1/domain-ownership/random-content` to get a verification token.\n2. **Host Token**: Create a file named `zast.txt` with the token content and host it at `https://your-domain.com/.well-known/zast.txt`.\n3. **Verify**: Call `POST /oxpecker/api/v1/domain-ownership/verify` to confirm ownership.\n\n### Step 3.5 (Optional): Configure Authentication using Embedded Browser\nIf your target service requires login, you can use the embedded browser API to capture session information.\n1. **Create Browser**: Call `POST /oxpecker/api/v1/browsers` to initialize a remote browser session.\n2. **Embed**: Use the returned `url` in an `<iframe>` within your application.\n3. **Interact**: Use `window.postMessage` to communicate with the iframe (see `/oxpecker/api/v1/browsers` documentation for protocol details).\n   - Navigate to login page using `go` or `newTab` command.\n   - Wait for user to log in.\n4. **Capture Session**: Send `getSession` command to the iframe to retrieve cookies and storage data.\n5. **Use in Task**: Include the captured session data in the `sandboxAuthInfos` field when calling `POST /oxpecker/api/v2/tasks`.\n\n### Step 4: Create the Task\nSubmit the scan job with all configurations.\n- **Endpoint**: `POST /oxpecker/api/v2/tasks`\n- **Payload**:\n    - `projectName`: Name of your project.\n    - `lang`: Programming language (e.g., \"JAVA\").\n    - `primarySourceCode`: The `sha256` hash from Step 1.\n    - `sandboxHomePageUrl`: The URL of your deployed service.\n    - `sandboxAuthInfos`: (Optional) If your service requires login, provide account credentials here (see Step 3.5).\n\n### Step 5: Monitor Progress & View Results\n- **Track Status**: Use `GET /oxpecker/api/v1/tasks/{taskId}` to check the `taskStatus`.\n- **Get Results**: Once completed, use `POST /oxpecker/api/v1/tasks/{taskId}/results/search` to retrieve vulnerability findings.\n- **Export Report**: Download a PDF or HTML report using `GET /oxpecker/api/v2/tasks/{taskId}/report`."
  },
  "servers": [
    {
      "url": "https://zast.ai",
      "description": "Generated server url"
    }
  ],
  "paths": {
    "/oxpecker/api/v2/tasks": {
      "post": {
        "tags": [
          "task-v-2-controller"
        ],
        "operationId": "createTask",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTaskV2Request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateTaskResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Create Task",
        "description": "Creates a new security scan task with the specified configuration, including source code, sandbox environment, and scan options."
      }
    },
    "/oxpecker/api/v2/tasks/create-group": {
      "post": {
        "tags": [
          "task-v-2-controller"
        ],
        "operationId": "createGroupTask",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTaskV2Request"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateTaskResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Create Task Group",
        "description": "Creates a group of tasks for managing multiple related scans together. Use this interface when there are multiple microservices and multiple artifact files need to be uploaded simultaneously."
      }
    },
    "/oxpecker/api/v1/tasks/{taskId}/results/stat": {
      "post": {
        "tags": [
          "task-controller"
        ],
        "operationId": "getTaskVerifyPassResultStat",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 32,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetTaskVerifyPassResultStatResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get Result Statistics",
        "description": "Retrieves statistical data about the results of a specific task, such as the count of vulnerabilities by severity."
      }
    },
    "/oxpecker/api/v1/tasks/{taskId}/results/search": {
      "post": {
        "tags": [
          "task-controller"
        ],
        "operationId": "listTaskVulVerifyResults",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListTaskVulVerifyResultsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ListTaskVulVerifyResultsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Search Results",
        "description": "Searches for specific vulnerability results within a task based on filter criteria."
      }
    },
    "/oxpecker/api/v1/tasks/{taskId}/exploit-chains/search": {
      "post": {
        "tags": [
          "task-controller"
        ],
        "operationId": "listTaskExploitChains",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListTaskExploitChainRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ListTaskExploitChainsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Search Exploit Chains",
        "description": "Searches for exploit chains associated with a task, which describe how multiple vulnerabilities can be chained together."
      }
    },
    "/oxpecker/api/v1/tasks/terminate": {
      "post": {
        "tags": [
          "task-controller"
        ],
        "operationId": "terminateTask",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TerminateTaskRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Terminate Task",
        "description": "Terminates a currently running task."
      }
    },
    "/oxpecker/api/v1/tasks/search": {
      "post": {
        "tags": [
          "task-controller"
        ],
        "operationId": "listTasks",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListTasksRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ListTasksResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Search Tasks",
        "description": "Retrieves a list of tasks based on search criteria like status, project name, or date."
      }
    },
    "/oxpecker/api/v1/tasks/delete": {
      "post": {
        "tags": [
          "task-controller"
        ],
        "operationId": "deleteTasks",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteTasksRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Delete Tasks",
        "description": "Deletes one or more tasks identified by their IDs."
      }
    },
    "/oxpecker/api/v1/shares": {
      "post": {
        "tags": [
          "vul-share-controller"
        ],
        "operationId": "createVulShare",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVulShareRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateVulShareResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Create Share",
        "description": "Creates a shareable link for vulnerabilities or reports, allowing external access."
      }
    },
    "/oxpecker/api/v1/shares/search": {
      "post": {
        "tags": [
          "vul-share-controller"
        ],
        "operationId": "listVulShares",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListVulSharesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ListVulSharesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Search Shares",
        "description": "Lists existing shared links and their details."
      }
    },
    "/oxpecker/api/v1/shares/public/{shareId}": {
      "get": {
        "tags": [
          "vul-share-controller"
        ],
        "operationId": "getVulShare",
        "parameters": [
          {
            "name": "shareId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetVulShareResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get Shared Info",
        "description": "Retrieves information about a specific share using its ID."
      },
      "post": {
        "tags": [
          "vul-share-controller"
        ],
        "operationId": "extractVulShare",
        "parameters": [
          {
            "name": "shareId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractVulShareRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetVulShareResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Extract Shared Info",
        "description": "Accesses a protected share using an extraction code."
      }
    },
    "/oxpecker/api/v1/shares/public/{shareId}/vuls/{vulId}": {
      "get": {
        "tags": [
          "vul-share-controller"
        ],
        "operationId": "getVulDetail",
        "parameters": [
          {
            "name": "shareId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "vulId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get Shared Vulnerability",
        "description": "Retrieves details of a specific vulnerability within a share."
      },
      "post": {
        "tags": [
          "vul-share-controller"
        ],
        "operationId": "extractVulDetail",
        "parameters": [
          {
            "name": "shareId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "vulId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractVulShareRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Extract Shared Vulnerability",
        "description": "Accesses details of a specific vulnerability within a protected share using an extraction code."
      }
    },
    "/oxpecker/api/v1/shares/public/{shareId}/exploit-chains/{vulId}": {
      "post": {
        "tags": [
          "vul-share-controller"
        ],
        "operationId": "extractExploitChainDetail",
        "parameters": [
          {
            "name": "shareId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "vulId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractVulShareRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetVulnAgentLogicExploitChainDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Extract Exploit Chain",
        "description": "Retrieves details of an exploit chain within a shared report."
      }
    },
    "/oxpecker/api/v1/shares/generate-id": {
      "post": {
        "tags": [
          "vul-share-controller"
        ],
        "operationId": "generateVulShareId",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateVulShareIdResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Generate Share ID",
        "description": "Generates a unique identifier for creating a new share."
      }
    },
    "/oxpecker/api/v1/shares/delete": {
      "post": {
        "tags": [
          "vul-share-controller"
        ],
        "operationId": "deleteVulShares",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteVulSharesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Delete Shares",
        "description": "Deletes specified shares."
      }
    },
    "/oxpecker/api/v1/network-diagnostics": {
      "post": {
        "tags": [
          "network-diagnostics-controller"
        ],
        "operationId": "createNetworkDiagnostics",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateNetworkDiagnosticsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateNetworkDiagnosticsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Create Network Diagnostics",
        "description": "Initiates a network diagnostic test for a specified URL.\n\n### Usage\n\n1. Call this endpoint with the target URL (`testUrl`) to start the diagnostics process.\n2. The response will contain an `id` which uniquely identifies this diagnostic session.\n3. Use the returned `id` to poll the status of the diagnostics via `GET /oxpecker/api/v1/network-diagnostics/{id}/next-stage`."
      }
    },
    "/oxpecker/api/v1/files/upload": {
      "post": {
        "tags": [
          "file-controller"
        ],
        "operationId": "upload",
        "parameters": [
          {
            "name": "sha256",
            "in": "query",
            "required": false,
            "schema": {
              "maxLength": 64,
              "minLength": 64,
              "type": "string"
            }
          },
          {
            "name": "forceUpload",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "file"
                ],
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/UploadedFile"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Upload File",
        "description": "Uploads a file to the server, commonly used for source code or configuration files."
      }
    },
    "/oxpecker/api/v1/files/check-exist/{sha256}": {
      "post": {
        "tags": [
          "file-controller"
        ],
        "operationId": "checkFileExist",
        "parameters": [
          {
            "name": "sha256",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 64,
              "minLength": 64,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Check File Existence",
        "description": "Checks if a file with the given SHA256 hash already exists on the server."
      }
    },
    "/oxpecker/api/v1/domain-ownership/verify": {
      "post": {
        "tags": [
          "domain-ownership-controller"
        ],
        "operationId": "verifyDomain",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyDomainRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Verify Domain Ownership",
        "description": "Verifies ownership of a domain by checking for a specific file or DNS record."
      }
    },
    "/oxpecker/api/v1/shares/{shareId}": {
      "patch": {
        "tags": [
          "vul-share-controller"
        ],
        "operationId": "updateVulShare",
        "parameters": [
          {
            "name": "shareId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVulShareRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Update Share",
        "description": "Updates configuration for an existing share, such as validity period."
      }
    },
    "/oxpecker/api/v2/tasks/{taskId}/report": {
      "get": {
        "tags": [
          "report-export-controller"
        ],
        "operationId": "exportFileReport",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 32,
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-User-Language",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "default": "en"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingResponseBody"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Export Report",
        "description": "Exports the task report in a specified format (e.g., PDF, HTML)."
      }
    },
    "/oxpecker/api/v1/tasks/{taskId}": {
      "get": {
        "tags": [
          "task-controller"
        ],
        "operationId": "getTask",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 32,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetTaskResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get Task Details",
        "description": "Retrieves detailed information about a specific task."
      }
    },
    "/oxpecker/api/v1/tasks/{taskId}/results/{vulId}": {
      "get": {
        "tags": [
          "task-controller"
        ],
        "operationId": "getTaskVerifyResult",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 32,
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "vulId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get Vulnerability Result",
        "description": "Retrieves details of a specific vulnerability found in a task."
      }
    },
    "/oxpecker/api/v1/tasks/{taskId}/exploit-chains/{vulId}": {
      "get": {
        "tags": [
          "task-controller"
        ],
        "operationId": "getTaskExploitChain",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 32,
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "vulId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetTaskExploitChainResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get Exploit Chain",
        "description": "Retrieves details of a specific exploit chain for a task."
      }
    },
    "/oxpecker/api/v1/tasks/source-ip": {
      "get": {
        "tags": [
          "task-controller"
        ],
        "operationId": "getExecutorIp",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetExecutorIpResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get Source IP",
        "description": "Returns the IP address of the task executor, useful for allowlisting."
      }
    },
    "/oxpecker/api/v1/sca/result-base-info/task/{taskId}": {
      "get": {
        "tags": [
          "sca-controller"
        ],
        "operationId": "getScaBaseInfoByTaskId",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetScaBaseInfoResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get SCA Info",
        "description": "Retrieves base information for Software Composition Analysis (SCA) results."
      }
    },
    "/oxpecker/api/v1/sca/deps/{hash}/vulns/{vulnId}": {
      "get": {
        "tags": [
          "sca-controller"
        ],
        "operationId": "getScaVulnDetail",
        "parameters": [
          {
            "name": "hash",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "vulnId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetScaVulnDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get SCA Vulnerability",
        "description": "Retrieves detailed information about a specific vulnerability found in dependencies."
      }
    },
    "/oxpecker/api/v1/network-diagnostics/{id}/next-stage": {
      "get": {
        "tags": [
          "network-diagnostics-controller"
        ],
        "operationId": "getNetworkDiagnostics",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-User-Language",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "default": "en"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetNetworkDiagnosticsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get Diagnostics Status",
        "description": "Checks the progress and next stage of a running network diagnostic test.\n\n### Polling Mechanism\n\nThis endpoint is designed to be polled to track the progress of the network diagnostics.\n\n1. **Initiate Diagnostics**: First, call `POST /oxpecker/api/v1/network-diagnostics` to start the diagnostics and get an `id`.\n2. **Poll Status**: Repeatedly call this endpoint (`GET /oxpecker/api/v1/network-diagnostics/{id}/next-stage`) using the `id`.\n3. **Check Response**:\n   - The response contains a `status` field and a `stages` array.\n   - `status`: Indicates the overall status (e.g., `RUNNING`, `FINISHED`).\n   - `nextStage`: Indicates the index of the stage currently being processed or next to be processed.\n   - `stages`: An array of stage objects, each containing `stageName`, `description`, `status` (e.g., `PASS`, `FAIL`, `NOT_STARTED`), and `resultInfo`.\n4. **Completion**:\n   - Continue polling until `status` is `FINISHED`.\n   - If a stage fails (`status` is `FAIL`), the diagnostics may stop or continue depending on the logic, but the `resultInfo` will contain error details.\n   - When `status` is `FINISHED`, check if all stages have `PASS` status to determine overall success."
      }
    },
    "/oxpecker/api/v1/domain-ownership/random-content": {
      "get": {
        "tags": [
          "domain-ownership-controller"
        ],
        "operationId": "getRandomContent",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetRandomContentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "summary": "Get Random Content",
        "description": "Generates random content used for domain ownership verification."
      }
    },
    "/oxpecker/api/v1/browsers": {
      "post": {
        "tags": [
          "browser-box-controller"
        ],
        "operationId": "createBrowser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBrowserRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateBrowserResponse"
                }
              }
            }
          }
        },
        "summary": "Create Browser",
        "description": "Creates a remote browser instance and returns a URL to be embedded in an iframe.\n\n### Iframe Communication\n\nCommunication with the embedded browser is done via `window.postMessage`.\n\n#### Request Format (Parent to Iframe)\n```json\n{\n  \"type\": \"commandName\",\n  \"data\": { ... },\n  \"messageId\": \"uniqueId\"\n}\n```\n\n#### Response Format (Iframe to Parent)\n```json\n{\n  \"type\": \"commandName\",\n  \"messageId\": \"uniqueId\",\n  \"data\": {\n    \"success\": true,\n    \"data\": { ... },\n    \"error\": \"error message if failed\"\n  }\n}\n```\n\n#### Supported Commands\n\n1. **getTabs**: Get list of open tabs.\n   - Request: `{ \"type\": \"getTabs\" }`\n\n2. **newTab**: Create a new tab.\n   - Request: `{ \"type\": \"newTab\", \"data\": { \"url\": \"https://example.com\" } }`\n\n3. **newContextTab**: Create a new tab in a new browser context.\n   - Request: `{ \"type\": \"newContextTab\", \"data\": { \"url\": \"https://example.com\" } }`\n\n4. **switchTab**: Switch to a specific tab.\n   - Request: `{ \"type\": \"switchTab\", \"data\": { \"targetId\": \"tabId\" } }`\n\n5. **closeTab**: Close a specific tab.\n   - Request: `{ \"type\": \"closeTab\", \"data\": { \"targetId\": \"tabId\" } }`\n\n6. **getSession**: Get session information (cookies, storage) for a tab.\n   - Request: `{ \"type\": \"getSession\", \"data\": { \"targetId\": \"tabId\" } }`\n\n7. **go**: Navigate current tab to a URL.\n   - Request: `{ \"type\": \"go\", \"data\": { \"url\": \"https://example.com\" } }`\n\n8. **clearSession**: Clear session for a tab.\n   - Request: `{ \"type\": \"clearSession\", \"data\": { \"targetId\": \"tabId\" } }`\n\n9. **clearTabs**: Close all tabs.\n   - Request: `{ \"type\": \"clearTabs\" }`\n\n#### Events (Iframe to Parent)\n\n1. **iframeLoaded**: Sent when the iframe is fully loaded and ready.\n   - Format: `{ \"type\": \"iframeLoaded\" }`\n\n2. **updateTabs**: Sent when the list of tabs changes.\n   - Format: `{ \"type\": \"updateTabs\", \"data\": { \"data\": [ ...tabObjects ] } }`"
      }
    }
  },
  "components": {
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "errCode": {
            "type": "integer",
            "format": "int32"
          },
          "errMsg": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          }
        }
      },
      "CreateTaskV2Request": {
        "required": [
          "lang"
        ],
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "description": "Programming language of the project (e.g., JAVA, PYTHON)."
          },
          "projectName": {
            "type": "string",
            "description": "Name of the project."
          },
          "projectDesc": {
            "type": "string",
            "description": "Description of the project."
          },
          "javaPackage": {
            "type": "string",
            "description": "Java package name (if applicable)."
          },
          "primarySourceCode": {
            "type": "string",
            "description": "Main source code content or identifier."
          },
          "sourceCodeInfos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SourceCodeInfo"
            },
            "description": "List of source code files."
          },
          "sandboxHomePageUrl": {
            "type": "string",
            "description": "URL of the sandbox environment's home page."
          },
          "sandboxTargetServiceUrl": {
            "type": "string",
            "description": "URL of the target service in the sandbox."
          },
          "sandboxAuthInfos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SandboxAuthInfo"
            },
            "description": "Authentication information for the sandbox."
          },
          "browserBoxId": {
            "type": "string",
            "description": "ID of the browser box configuration."
          },
          "requestDeepAssessment": {
            "type": "boolean",
            "description": "Whether to request deep assessment."
          }
        },
        "description": "Parameters for creating a new V2 task."
      },
      "SandboxAuthInfo": {
        "type": "object",
        "properties": {
          "roleName": {
            "type": "string",
            "description": "Name of the role for authentication."
          },
          "loginUrl": {
            "type": "string",
            "description": "URL to perform login."
          },
          "sandboxAuthHeaders": {
            "type": "string",
            "description": "Headers to be used for authentication."
          },
          "originRequestData": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "description": "Original request data."
          }
        },
        "description": "Authentication details for accessing the sandbox."
      },
      "SourceCodeInfo": {
        "type": "object",
        "properties": {
          "sourceCode": {
            "type": "string",
            "description": "The actual source code content."
          },
          "fileName": {
            "type": "string",
            "description": "Name of the file."
          },
          "language": {
            "type": "string",
            "description": "Language of the source code."
          },
          "type": {
            "type": "string",
            "description": "Type of the source code file."
          }
        },
        "description": "Details about a source code file."
      },
      "SubserverInfo": {
        "type": "object",
        "properties": {
          "fileHash": {
            "type": "string",
            "description": "File hash."
          },
          "lang": {
            "type": "string",
            "description": "Language."
          },
          "url": {
            "type": "string",
            "description": "URL."
          },
          "additionalSrcHash": {
            "type": "string",
            "description": "Additional source hash."
          }
        },
        "description": "Subserver information."
      },
      "CreateTaskResponse": {
        "type": "object",
        "properties": {
          "taskId": {
            "type": "string",
            "description": "Unique identifier of the created task."
          }
        },
        "description": "Response after creating a task."
      },
      "StreamingResponseBody": {
        "type": "object"
      },
      "GetTaskVerifyPassResultStatResponse": {
        "type": "object",
        "properties": {
          "taskId": {
            "type": "string",
            "description": "Task ID."
          },
          "projectName": {
            "type": "string",
            "description": "Project name."
          },
          "total": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of vulnerabilities."
          },
          "purchased": {
            "type": "integer",
            "format": "int32",
            "description": "Number of purchased vulnerabilities."
          },
          "lowCount": {
            "type": "integer",
            "format": "int32",
            "description": "Count of low severity vulnerabilities."
          },
          "mediumCount": {
            "type": "integer",
            "format": "int32",
            "description": "Count of medium severity vulnerabilities."
          },
          "highCount": {
            "type": "integer",
            "format": "int32",
            "description": "Count of high severity vulnerabilities."
          },
          "criticalCount": {
            "type": "integer",
            "format": "int32",
            "description": "Count of critical severity vulnerabilities."
          }
        },
        "description": "Statistics of task verification results."
      },
      "Filter": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Field to filter."
          },
          "op": {
            "type": "string",
            "enum": [
              "eq",
              "ne",
              "gt",
              "ge",
              "lt",
              "le",
              "like",
              "in",
              "between",
              "unsupported"
            ],
            "description": "Operator."
          },
          "value": {
            "type": "object",
            "description": "Value."
          }
        },
        "description": "Filter criteria."
      },
      "ListTaskVulVerifyResultsRequest": {
        "required": [
          "page",
          "size"
        ],
        "type": "object",
        "properties": {
          "page": {
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "description": "Page number."
          },
          "size": {
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "description": "Page size."
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Filter"
            },
            "description": "List of filters."
          },
          "sorts": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of sort criteria."
          }
        },
        "description": "Request to list task vulnerability verification results."
      },
      "CreateBrowserRequest": {
        "type": "object",
        "properties": {
          "targetServerUrl": {
            "type": "string"
          },
          "clientId": {
            "type": "string"
          }
        }
      },
      "CreateBrowserResponse": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          }
        }
      },
      "ListTaskVulVerifyResultsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaskVulVerifyResultInfo"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "TaskVulVerifyResultInfo": {
        "type": "object",
        "properties": {
          "ovId": {
            "type": "integer",
            "format": "int32",
            "description": "Original Vulnerability ID."
          },
          "vulId": {
            "type": "string",
            "description": "Vulnerability ID."
          },
          "category": {
            "type": "string",
            "description": "Vulnerability category."
          },
          "description": {
            "type": "string",
            "description": "Description of the vulnerability."
          },
          "cweId": {
            "type": "string",
            "description": "CWE ID."
          },
          "taskId": {
            "type": "string",
            "description": "Task ID."
          },
          "purchaseStatus": {
            "type": "string",
            "description": "Status of purchase."
          },
          "orderId": {
            "type": "string",
            "description": "Order ID."
          },
          "price": {
            "type": "integer",
            "format": "int64",
            "description": "Price of the vulnerability report."
          },
          "currency": {
            "type": "string",
            "description": "Currency for the price."
          },
          "staticVerifyOnly": {
            "type": "boolean",
            "description": "Indicates if only static verification was performed."
          },
          "deepAssessment": {
            "type": "boolean",
            "description": "Indicates if deep assessment was performed."
          },
          "categoryZh": {
            "type": "string",
            "description": "Category in Chinese."
          },
          "descriptionZh": {
            "type": "string",
            "description": "Description in Chinese."
          },
          "severity": {
            "type": "string",
            "description": "Severity level."
          }
        },
        "description": "Information about a vulnerability verification result."
      },
      "ListTaskExploitChainRequest": {
        "required": [
          "page",
          "size"
        ],
        "type": "object",
        "properties": {
          "page": {
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "description": "Page number."
          },
          "size": {
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "description": "Page size."
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Filter"
            },
            "description": "Filters."
          },
          "sorts": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sort criteria."
          }
        },
        "description": "Request to list exploit chains."
      },
      "ExploitChainInfo": {
        "type": "object",
        "properties": {
          "vulId": {
            "type": "string",
            "description": "Vulnerability ID."
          },
          "name": {
            "type": "string",
            "description": "Name of the exploit chain."
          },
          "description": {
            "type": "string",
            "description": "Description of the exploit chain."
          },
          "severity": {
            "type": "string",
            "description": "Severity of the exploit chain."
          },
          "impact": {
            "type": "string",
            "description": "Impact of the exploit chain."
          },
          "vulnerabilityIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of vulnerability IDs involved."
          },
          "chainSteps": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            },
            "description": "Steps in the exploit chain."
          },
          "purchaseStatus": {
            "type": "string",
            "description": "Purchase status."
          }
        },
        "description": "Details of an exploit chain."
      },
      "ListTaskExploitChainsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExploitChainInfo"
            },
            "description": "List of exploit chains."
          },
          "total": {
            "type": "integer",
            "format": "int32",
            "description": "Total count."
          }
        },
        "description": "Response list of exploit chains."
      },
      "TerminateTaskRequest": {
        "type": "object",
        "properties": {
          "taskId": {
            "type": "string",
            "description": "ID of the task to terminate."
          }
        },
        "description": "Request to terminate a task."
      },
      "ListTasksRequest": {
        "required": [
          "page",
          "size"
        ],
        "type": "object",
        "properties": {
          "page": {
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "description": "Page number."
          },
          "size": {
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "description": "Page size."
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Filter"
            },
            "description": "Filters."
          },
          "sorts": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Sort criteria."
          }
        },
        "description": "Request to list tasks."
      },
      "ListTasksResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaskInfo"
            }
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "TaskInfo": {
        "type": "object",
        "properties": {
          "taskId": {
            "type": "string",
            "description": "Task ID."
          },
          "lang": {
            "type": "string",
            "description": "Project language."
          },
          "projectName": {
            "type": "string",
            "description": "Project name."
          },
          "sourceCodeFileName": {
            "type": "string",
            "description": "Name of the source code file."
          },
          "errCode": {
            "type": "integer",
            "format": "int32",
            "description": "Error code if failed."
          },
          "errDetail": {
            "type": "string",
            "description": "Error details if failed."
          },
          "createdAt": {
            "type": "string",
            "description": "Creation timestamp."
          },
          "updatedAt": {
            "type": "string",
            "description": "Last update timestamp."
          },
          "taskStatus": {
            "type": "string",
            "description": "Current status of the task."
          },
          "failReason": {
            "type": "string",
            "description": "Reason for failure."
          },
          "resultsStat": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "description": "Result statistics."
          },
          "enableStaticVerification": {
            "type": "boolean",
            "description": "Whether static verification is enabled."
          },
          "deepAssessmentStatus": {
            "type": "string",
            "description": "Status of deep assessment."
          },
          "isGroupRoot": {
            "type": "boolean",
            "description": "Is this a group root task."
          },
          "isSubTask": {
            "type": "boolean",
            "description": "Is this a sub-task."
          }
        },
        "description": "General information about a task."
      },
      "DeleteTasksRequest": {
        "required": [
          "taskIds"
        ],
        "type": "object",
        "properties": {
          "taskIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of task IDs."
          }
        },
        "description": "Request to delete tasks."
      },
      "CreateVulShareRequest": {
        "type": "object",
        "properties": {
          "shareId": {
            "type": "string",
            "description": "Custom share ID (optional)."
          },
          "taskId": {
            "type": "string",
            "description": "Task ID."
          },
          "vulIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of vulnerability IDs to share."
          },
          "validityDays": {
            "type": "integer",
            "format": "int32",
            "description": "Number of days the share is valid."
          },
          "generateExtractCode": {
            "type": "boolean",
            "description": "Whether to generate an extraction code."
          },
          "extractCode": {
            "type": "string",
            "description": "Custom extraction code."
          },
          "exploitChainsIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of exploit chain IDs to share."
          }
        },
        "description": "Request to create a vulnerability share."
      },
      "CreateVulShareResponse": {
        "type": "object",
        "properties": {
          "shareId": {
            "type": "string",
            "description": "The generated share ID."
          },
          "extractCode": {
            "type": "string",
            "description": "The extraction code."
          }
        },
        "description": "Response for creating a share."
      },
      "ListVulSharesRequest": {
        "required": [
          "page",
          "size"
        ],
        "type": "object",
        "properties": {
          "page": {
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Filter"
            }
          },
          "sorts": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ListVulSharesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VulShareInfo"
            },
            "description": "List of share info."
          },
          "total": {
            "type": "integer",
            "format": "int32",
            "description": "Total count."
          }
        },
        "description": "Response list of vul shares."
      },
      "VulInfo": {
        "type": "object",
        "properties": {
          "vulId": {
            "type": "string",
            "description": "Vulnerability ID."
          },
          "severity": {
            "type": "string",
            "description": "Severity level."
          },
          "category": {
            "type": "string",
            "description": "Vulnerability category."
          },
          "purchaseStatus": {
            "type": "string",
            "description": "Purchase status."
          },
          "toolName": {
            "type": "string",
            "description": "Tool that detected the vulnerability."
          }
        },
        "description": "Information about a vulnerability."
      },
      "VulShareInfo": {
        "type": "object",
        "properties": {
          "shareId": {
            "type": "string",
            "description": "Share ID."
          },
          "taskId": {
            "type": "string",
            "description": "Task ID."
          },
          "projectName": {
            "type": "string",
            "description": "Project name."
          },
          "vulInfos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VulInfo"
            },
            "description": "Vulnerability infos."
          },
          "validityDays": {
            "type": "integer",
            "format": "int32",
            "description": "Validity days."
          },
          "extractCode": {
            "type": "string",
            "description": "Extract code."
          },
          "createdAt": {
            "type": "string",
            "description": "Created at."
          },
          "expiredAt": {
            "type": "string",
            "description": "Expired at."
          },
          "exploitChainInfos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExploitChainInfo"
            },
            "description": "Exploit chain infos."
          }
        },
        "description": "Vulnerability share info."
      },
      "ExtractVulShareRequest": {
        "type": "object",
        "properties": {
          "extractCode": {
            "type": "string",
            "description": "Extraction code."
          }
        },
        "description": "Request to extract shared content."
      },
      "GetVulShareResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VulInfo"
            },
            "description": "List of vulnerabilities."
          },
          "exploitChains": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExploitChainInfo"
            },
            "description": "List of exploit chains."
          }
        },
        "description": "Response with shared vulnerability info."
      },
      "GetVulnAgentLogicExploitChainDetailResponse": {
        "type": "object",
        "properties": {
          "vulId": {
            "type": "string",
            "description": "Vulnerability ID."
          },
          "name": {
            "type": "string",
            "description": "Name."
          },
          "description": {
            "type": "string",
            "description": "Description."
          },
          "severity": {
            "type": "string",
            "description": "Severity."
          },
          "impact": {
            "type": "string",
            "description": "Impact."
          },
          "vulnerabilityIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Associated vulnerability IDs."
          },
          "chainSteps": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            },
            "description": "Chain steps."
          },
          "pocCode": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "description": "POC code."
          },
          "purchaseStatus": {
            "type": "string",
            "description": "Purchase status."
          },
          "orderId": {
            "type": "string",
            "description": "Order ID."
          },
          "staticVerifyOnly": {
            "type": "boolean",
            "description": "Static verification only flag."
          }
        },
        "description": "Detailed exploit chain response."
      },
      "GenerateVulShareIdResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Generated ID."
          }
        },
        "description": "Response for generated share ID."
      },
      "DeleteVulSharesRequest": {
        "type": "object",
        "properties": {
          "shareIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of share IDs to delete."
          }
        },
        "description": "Request to delete shares."
      },
      "CreateNetworkDiagnosticsRequest": {
        "type": "object",
        "properties": {
          "testUrl": {
            "type": "string",
            "description": "URL to test."
          }
        },
        "description": "Request to create network diagnostics."
      },
      "CreateNetworkDiagnosticsResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Diagnostics ID."
          }
        },
        "description": "Response for created network diagnostics."
      },
      "UploadedFile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "description": "File ID."
          },
          "originFileName": {
            "type": "string",
            "description": "Original file name."
          },
          "sha256": {
            "type": "string",
            "description": "SHA256 hash of the file."
          },
          "fileType": {
            "type": "string",
            "description": "Type of the file."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Creation time."
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Update time."
          },
          "isDeleted": {
            "type": "integer",
            "format": "int32",
            "description": "Deletion flag."
          },
          "deletedFor": {
            "type": "string",
            "description": "Reason for deletion."
          },
          "fileSize": {
            "type": "integer",
            "format": "int64",
            "description": "Size of the file."
          },
          "createdBy": {
            "type": "string",
            "description": "User who uploaded the file."
          }
        },
        "description": "Details of an uploaded file."
      },
      "VerifyDomainRequest": {
        "type": "object",
        "properties": {
          "fetchUrl": {
            "type": "string",
            "description": "URL to fetch for verification."
          },
          "verifyContent": {
            "type": "string",
            "description": "Expected content to verify."
          }
        },
        "description": "Request to verify domain ownership."
      },
      "UpdateVulShareRequest": {
        "type": "object",
        "properties": {
          "validityDays": {
            "type": "integer",
            "format": "int32",
            "description": "New validity period in days."
          }
        },
        "description": "Request to update share details."
      },
      "GetTaskResponse": {
        "type": "object",
        "properties": {
          "taskId": {
            "type": "string",
            "description": "Task ID."
          },
          "lang": {
            "type": "string",
            "enum": [
              "JAVA",
              "GOLANG",
              "JAVASCRIPT",
              "PYTHON",
              "CSHARP",
              "UNSUPPORTED"
            ],
            "description": "Language."
          },
          "projectName": {
            "type": "string",
            "description": "Project Name."
          },
          "sourceCode": {
            "type": "string",
            "description": "Source Code."
          },
          "sourceCodeFileName": {
            "type": "string",
            "description": "File Name."
          },
          "taskStatus": {
            "type": "string",
            "description": "Status."
          },
          "failReason": {
            "type": "string",
            "description": "Failure Reason."
          },
          "errorCode": {
            "type": "integer",
            "format": "int32",
            "description": "Error Code."
          },
          "errorDetail": {
            "type": "string",
            "description": "Error Detail."
          },
          "params": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "description": "Parameters used."
          },
          "options": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "description": "Options."
          },
          "originalRequestData": {
            "type": "object",
            "description": "Original request data."
          },
          "createdAt": {
            "type": "string",
            "description": "Created At."
          },
          "updatedAt": {
            "type": "string",
            "description": "Updated At."
          },
          "taskResult": {
            "type": "string",
            "description": "Task Result."
          },
          "executedAt": {
            "type": "string",
            "description": "Executed At."
          },
          "createdBy": {
            "type": "string",
            "description": "Created By."
          },
          "resultsStat": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "description": "Results Statistics."
          },
          "taskStat": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "description": "Task Statistics."
          },
          "tokenUsed": {
            "type": "integer",
            "format": "int64",
            "description": "Tokens Used."
          },
          "creditsUsed": {
            "type": "integer",
            "format": "int64",
            "description": "Credits Used."
          },
          "enableStaticVerification": {
            "type": "boolean",
            "description": "Enable Static Verification."
          },
          "deepAssessmentStatus": {
            "type": "string",
            "description": "Deep Assessment Status."
          },
          "deepAssessmentTokenUsed": {
            "type": "integer",
            "format": "int64",
            "description": "Deep Assessment Token Used."
          },
          "deepAssessmentCreditsUsed": {
            "type": "integer",
            "format": "int64",
            "description": "Deep Assessment Credits Used."
          },
          "scaDepsHash": {
            "type": "string",
            "description": "SCA Dependencies Hash."
          }
        },
        "description": "Detailed response for a task."
      },
      "GetTaskExploitChainResponse": {
        "type": "object",
        "properties": {
          "vulId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          },
          "impact": {
            "type": "string"
          },
          "vulnerabilityIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "chainSteps": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            }
          },
          "pocCode": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          },
          "purchaseStatus": {
            "type": "string"
          },
          "orderId": {
            "type": "string"
          },
          "staticVerifyOnly": {
            "type": "boolean"
          }
        }
      },
      "GetExecutorIpResponse": {
        "type": "object",
        "properties": {
          "ipv4": {
            "type": "string",
            "description": "IPv4 address."
          },
          "ipv6": {
            "type": "string",
            "description": "IPv6 address."
          }
        },
        "description": "Response containing executor IP."
      },
      "GetScaBaseInfoResponse": {
        "type": "object",
        "properties": {
          "depsHash": {
            "type": "string",
            "description": "Dependencies Hash."
          },
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "Total vulnerabilities."
          },
          "vulns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScaResultBaseInfo"
            },
            "description": "List of SCA vulnerabilities."
          }
        },
        "description": "Response containing SCA base info."
      },
      "ScaResultBaseInfo": {
        "type": "object",
        "properties": {
          "vulnId": {
            "type": "string",
            "description": "Vulnerability ID."
          },
          "packageName": {
            "type": "string",
            "description": "Package Name."
          },
          "packageManager": {
            "type": "string",
            "description": "Package Manager."
          },
          "toolName": {
            "type": "string",
            "description": "Tool Name."
          },
          "severity": {
            "type": "string",
            "description": "Severity."
          },
          "category": {
            "type": "string",
            "description": "Category."
          },
          "categoryZh": {
            "type": "string",
            "description": "Category (Chinese)."
          },
          "message": {
            "type": "string",
            "description": "Message."
          },
          "messageZh": {
            "type": "string",
            "description": "Message (Chinese)."
          },
          "description": {
            "type": "string",
            "description": "Description."
          },
          "descriptionZh": {
            "type": "string",
            "description": "Description (Chinese)."
          },
          "cweId": {
            "type": "string",
            "description": "CWE ID."
          },
          "depFrom": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Dependency path."
          }
        },
        "description": "Base info for SCA result."
      },
      "GetScaVulnDetailResponse": {
        "type": "object",
        "properties": {
          "vulnId": {
            "type": "string",
            "description": "Vulnerability ID."
          },
          "packageName": {
            "type": "string",
            "description": "Package name."
          },
          "packageManager": {
            "type": "string",
            "description": "Package manager."
          },
          "toolName": {
            "type": "string",
            "description": "Tool name."
          },
          "severity": {
            "type": "string",
            "description": "Severity."
          },
          "category": {
            "type": "string",
            "description": "Category."
          },
          "categoryZh": {
            "type": "string",
            "description": "Category (Chinese)."
          },
          "message": {
            "type": "string",
            "description": "Message."
          },
          "messageZh": {
            "type": "string",
            "description": "Message (Chinese)."
          },
          "description": {
            "type": "string",
            "description": "Description."
          },
          "descriptionZh": {
            "type": "string",
            "description": "Description (Chinese)."
          },
          "cweId": {
            "type": "string",
            "description": "CWE ID."
          },
          "cwes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of CWEs."
          },
          "cves": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of CVEs."
          },
          "additionalData": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "description": "Additional data."
          },
          "depFrom": {
            "type": "object",
            "description": "Dependency origin."
          }
        },
        "description": "Detailed SCA vulnerability response."
      },
      "GetNetworkDiagnosticsResponse": {
        "type": "object",
        "properties": {
          "diagId": {
            "type": "string",
            "description": "Diagnostics ID."
          },
          "testUrl": {
            "type": "string",
            "description": "URL being tested."
          },
          "status": {
            "type": "string",
            "description": "Current status."
          },
          "stageCount": {
            "type": "integer",
            "format": "int32",
            "description": "Total stages."
          },
          "nextStage": {
            "type": "integer",
            "format": "int32",
            "description": "Next stage index."
          },
          "stages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StageInfo"
            },
            "description": "List of stages."
          }
        },
        "description": "Response for network diagnostics."
      },
      "StageInfo": {
        "type": "object",
        "properties": {
          "stageName": {
            "type": "string",
            "description": "Name of the stage."
          },
          "description": {
            "type": "string",
            "description": "Description of the stage."
          },
          "status": {
            "type": "string",
            "description": "Status of the stage."
          },
          "resultInfo": {
            "type": "string",
            "description": "Result information."
          }
        },
        "description": "Information about a diagnostic stage."
      },
      "GetRandomContentResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "Random content string."
          },
          "expiredAt": {
            "type": "string",
            "description": "Expiration timestamp."
          }
        },
        "description": "Response containing random content."
      },
      "GetClerkPublishableKeyResponse": {
        "type": "object",
        "properties": {
          "publishableKey": {
            "type": "string",
            "description": "The publishable key."
          }
        },
        "description": "Response containing Clerk key."
      }
    }
  }
}