{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/superglue/main/json-schema/superglue-run-request-schema.json",
  "title": "RunRequest",
  "x-generated": "2026-10-19",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/superglue-openapi.yml#/components/schemas/RunRequest",
  "type": "object",
  "properties": {
    "runId": {
      "type": "string",
      "description": "Optional pre-generated run ID. If not provided, server generates one.\nUseful for idempotency and tracking runs before they start.\n"
    },
    "inputs": {
      "type": "object",
      "description": "Tool-specific input parameters",
      "additionalProperties": true
    },
    "files": {
      "type": "object",
      "description": "Files made available to the tool, keyed by the input name used in expressions.",
      "additionalProperties": {
        "$ref": "#/$defs/ExecutionFileEnvelope"
      }
    },
    "credentials": {
      "type": "object",
      "description": "Ephemeral secret names and values merged into the run context. These values are not saved.\nPrefer a saved credential and `options.pinnedCredentials` for reusable integrations.\n",
      "additionalProperties": {
        "type": "string"
      }
    },
    "includeStepResultData": {
      "type": "boolean",
      "default": false,
      "description": "Include each step's result data in a synchronous response."
    },
    "stateFixture": {
      "type": "object",
      "description": "Seed sourceData.persistedState for this run instead of the tool's persistent state.\nA seeded run never reads or saves persistent state changes, so it can test warm-state\nbehavior (watermarks, cursors, dedupe) without touching real state. To adopt a state\npermanently, use PUT /tools/{toolId}/state.\n",
      "additionalProperties": true
    },
    "options": {
      "type": "object",
      "properties": {
        "async": {
          "type": "boolean",
          "default": false,
          "description": "If true, return immediately (202) and execute asynchronously. If false, wait for completion (200)."
        },
        "timeout": {
          "type": "integer",
          "description": "Request timeout in milliseconds",
          "minimum": 1
        },
        "webhookUrl": {
          "type": "string",
          "description": "Callback URL or tool chain trigger when the run finishes. Supports two formats:\n\n**HTTP webhook (notify external service):**\nStandard URL (e.g., `https://your-app.com/webhooks/superglue`). \nReceives a POST request with the Run object in the body.\n\n**Tool chain (trigger another tool):**\nUse `tool:{toolId}` format (e.g., `tool:process-results`).\nAutomatically triggers the specified tool with the current tool's output as its input payload.\nThe chained tool run will have `requestSource: \"tool-chain\"`.\n\nTool chaining enables building multi-tool workflows where one tool's output feeds into another.\n"
        },
        "pinnedCredentials": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Per-system credential selection as `{ systemId: credentialsId }`.\nEach pinned credential must be accessible to the executing user.\nSystems not listed use the executing user's default credentials.\n"
        },
        "requestSource": {
          "type": "string",
          "description": "Override the request source identifier. Only client request sources are honored;\nother values are derived from the request context.\n",
          "enum": [
            "frontend",
            "agent",
            "mcp",
            "cli"
          ]
        },
        "traceId": {
          "type": "string",
          "description": "Custom trace ID for log tracking"
        },
        "clientInfo": {
          "type": "object",
          "description": "Optional client identity stored with the run.",
          "properties": {
            "name": {
              "type": "string",
              "maxLength": 256
            },
            "version": {
              "type": "string",
              "maxLength": 256
            },
            "userAgent": {
              "type": "string",
              "maxLength": 256
            }
          }
        }
      }
    }
  },
  "$defs": {
    "AnyValue": {
      "description": "Any valid JSON value."
    },
    "ExecutionFileEnvelope": {
      "type": "object",
      "required": [
        "kind",
        "filename",
        "contentType",
        "size"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "execution_file"
          ]
        },
        "filename": {
          "type": "string"
        },
        "contentType": {
          "type": "string"
        },
        "size": {
          "type": "integer",
          "minimum": 0
        },
        "rawBase64": {
          "type": "string",
          "format": "byte",
          "description": "Base64-encoded file contents when supplied inline."
        },
        "fileType": {
          "type": "string",
          "enum": [
            "CSV",
            "JSON",
            "XML",
            "YAML",
            "EXCEL",
            "HTML",
            "PDF",
            "DOCX",
            "PPTX",
            "ZIP",
            "BINARY",
            "RAW",
            "AUTO"
          ]
        },
        "extracted": {
          "$ref": "#/$defs/AnyValue"
        },
        "parseError": {
          "type": "string"
        }
      }
    }
  }
}