{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/phoenix/json-schema/phoenix-chat-request-schema.json",
  "title": "ChatRequest",
  "description": "Discriminated union of chat request payloads.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/phoenix-chat-api-openapi.yml#/components/schemas/ChatRequest",
  "oneOf": [
    {
      "$ref": "#/$defs/ChatSubmitMessage"
    },
    {
      "$ref": "#/$defs/ChatRegenerateMessage"
    }
  ],
  "$defs": {
    "AgentSpanContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "span",
          "title": "Type"
        },
        "projectNodeId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Projectnodeid"
        },
        "spanNodeId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Spannodeid"
        },
        "otelSpanId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Otelspanid"
        }
      },
      "type": "object",
      "required": [
        "type"
      ],
      "title": "AgentSpanContext",
      "description": "Span the user has selected.\n\nExactly one of ``span_node_id`` (relay) or ``otel_span_id`` (OpenTelemetry\nhex) must be set. ``project_node_id`` is optional because a span can be\nselected from views outside a project route."
    },
    "AppContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "app",
          "title": "Type"
        },
        "currentDateTime": {
          "type": "string",
          "title": "Currentdatetime"
        },
        "timeZone": {
          "type": "string",
          "title": "Timezone"
        }
      },
      "type": "object",
      "required": [
        "type",
        "currentDateTime",
        "timeZone"
      ],
      "title": "AppContext",
      "description": "Per-turn browser clock context for resolving relative time requests."
    },
    "AssistantMessageMetadata": {
      "properties": {
        "sessionId": {
          "type": "string",
          "title": "Sessionid"
        },
        "trace": {
          "$ref": "#/$defs/AssistantMessageMetadataTraceIds"
        },
        "usage": {
          "$ref": "#/$defs/AssistantMessageMetadataUsage"
        }
      },
      "type": "object",
      "required": [
        "sessionId"
      ],
      "title": "AssistantMessageMetadata",
      "description": "Wire schema for the chat stream's `message_metadata` payload."
    },
    "AssistantMessageMetadataTraceIds": {
      "properties": {
        "traceId": {
          "type": "string",
          "title": "Traceid"
        },
        "rootSpanId": {
          "type": "string",
          "title": "Rootspanid"
        }
      },
      "type": "object",
      "required": [
        "traceId",
        "rootSpanId"
      ],
      "title": "AssistantMessageMetadataTraceIds"
    },
    "AssistantMessageMetadataUsage": {
      "properties": {
        "tokens": {
          "$ref": "#/$defs/AssistantMessageMetadataUsageTokens"
        },
        "promptDetails": {
          "$ref": "#/$defs/AssistantMessageMetadataUsageTokenDetails"
        }
      },
      "type": "object",
      "required": [
        "tokens"
      ],
      "title": "AssistantMessageMetadataUsage"
    },
    "AssistantMessageMetadataUsageTokenDetails": {
      "properties": {
        "cacheRead": {
          "type": "integer",
          "title": "Cacheread"
        },
        "cacheWrite": {
          "type": "integer",
          "title": "Cachewrite"
        }
      },
      "type": "object",
      "required": [
        "cacheRead",
        "cacheWrite"
      ],
      "title": "AssistantMessageMetadataUsageTokenDetails"
    },
    "AssistantMessageMetadataUsageTokens": {
      "properties": {
        "prompt": {
          "type": "integer",
          "title": "Prompt"
        },
        "completion": {
          "type": "integer",
          "title": "Completion"
        },
        "total": {
          "type": "integer",
          "title": "Total"
        }
      },
      "type": "object",
      "required": [
        "prompt",
        "completion",
        "total"
      ],
      "title": "AssistantMessageMetadataUsageTokens"
    },
    "AssistantMetadataUIMessage": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "role": {
          "type": "string",
          "enum": [
            "system",
            "user",
            "assistant"
          ],
          "title": "Role"
        },
        "metadata": {
          "$ref": "#/$defs/AssistantMessageMetadata"
        },
        "parts": {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/TextUIPart"
              },
              {
                "$ref": "#/$defs/ReasoningUIPart"
              },
              {
                "$ref": "#/$defs/ToolInputStreamingPart"
              },
              {
                "$ref": "#/$defs/ToolInputAvailablePart"
              },
              {
                "$ref": "#/$defs/ToolOutputAvailablePart"
              },
              {
                "$ref": "#/$defs/ToolOutputErrorPart"
              },
              {
                "$ref": "#/$defs/ToolApprovalRequestedPart"
              },
              {
                "$ref": "#/$defs/ToolApprovalRespondedPart"
              },
              {
                "$ref": "#/$defs/ToolOutputDeniedPart"
              },
              {
                "$ref": "#/$defs/DynamicToolInputStreamingPart"
              },
              {
                "$ref": "#/$defs/DynamicToolInputAvailablePart"
              },
              {
                "$ref": "#/$defs/DynamicToolOutputAvailablePart"
              },
              {
                "$ref": "#/$defs/DynamicToolOutputErrorPart"
              },
              {
                "$ref": "#/$defs/DynamicToolApprovalRequestedPart"
              },
              {
                "$ref": "#/$defs/DynamicToolApprovalRespondedPart"
              },
              {
                "$ref": "#/$defs/DynamicToolOutputDeniedPart"
              },
              {
                "$ref": "#/$defs/SourceUrlUIPart"
              },
              {
                "$ref": "#/$defs/SourceDocumentUIPart"
              },
              {
                "$ref": "#/$defs/FileUIPart"
              },
              {
                "$ref": "#/$defs/DataUIPart"
              },
              {
                "$ref": "#/$defs/StepStartUIPart"
              }
            ]
          },
          "type": "array",
          "title": "Parts"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "id",
        "role",
        "parts"
      ],
      "title": "AssistantMetadataUIMessage",
      "description": "`UIMessage` with `metadata` narrowed to `AssistantMessageMetadata`."
    },
    "BuiltInProviderModelSelection": {
      "properties": {
        "providerType": {
          "type": "string",
          "const": "builtin",
          "title": "Providertype"
        },
        "provider": {
          "$ref": "#/$defs/ModelProvider"
        },
        "modelName": {
          "type": "string",
          "title": "Modelname"
        },
        "openaiApiType": {
          "type": "string",
          "enum": [
            "chat_completions",
            "responses"
          ],
          "title": "Openaiapitype",
          "default": "responses"
        }
      },
      "type": "object",
      "required": [
        "providerType",
        "provider",
        "modelName"
      ],
      "title": "BuiltInProviderModelSelection",
      "description": "Chat against a Phoenix built-in provider.\n\nCredentials and connection details (base URL, Azure endpoint, AWS\nregion) are resolved from the secret store first and the process\nenvironment second. ``openai_api_type`` is honoured by the OpenAI and\nAzure OpenAI branches; other providers ignore it."
    },
    "ChatContext": {
      "oneOf": [
        {
          "$ref": "#/$defs/AppContext"
        },
        {
          "$ref": "#/$defs/ProjectContext"
        },
        {
          "$ref": "#/$defs/TraceContext"
        },
        {
          "$ref": "#/$defs/AgentSpanContext"
        },
        {
          "$ref": "#/$defs/PlaygroundContext"
        },
        {
          "$ref": "#/$defs/CodeEvaluatorContext"
        },
        {
          "$ref": "#/$defs/LlmEvaluatorContext"
        },
        {
          "$ref": "#/$defs/DatasetContext"
        },
        {
          "$ref": "#/$defs/GraphQLContext"
        },
        {
          "$ref": "#/$defs/WebAccessContext"
        },
        {
          "$ref": "#/$defs/SubagentsContext"
        }
      ],
      "title": "ChatContext",
      "description": "Discriminated union of every UI-state context the agent understands."
    },
    "ChatRegenerateMessage": {
      "properties": {
        "trigger": {
          "type": "string",
          "const": "regenerate-message",
          "title": "Trigger"
        },
        "id": {
          "type": "string",
          "title": "Id"
        },
        "messages": {
          "items": {
            "$ref": "#/$defs/AssistantMetadataUIMessage"
          },
          "type": "array",
          "title": "Messages"
        },
        "messageId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Messageid"
        },
        "ingestTraces": {
          "type": "boolean",
          "title": "Ingesttraces",
          "default": false
        },
        "exportRemoteTraces": {
          "type": "boolean",
          "title": "Exportremotetraces",
          "default": false
        },
        "contexts": {
          "items": {
            "$ref": "#/$defs/ChatContext"
          },
          "type": "array",
          "title": "Contexts"
        },
        "editPermission": {
          "type": "string",
          "enum": [
            "manual",
            "bypass"
          ],
          "title": "Editpermission",
          "default": "manual"
        },
        "requestedSkills": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Requestedskills",
          "description": "Skills the user explicitly requested via the prompt's slash-command affordance. The server force-loads each available skill by injecting a synthetic load_skill tool call/result at the tail of the message history. Unknown or context-unavailable names are ignored."
        },
        "model": {
          "oneOf": [
            {
              "$ref": "#/$defs/CustomProviderModelSelection"
            },
            {
              "$ref": "#/$defs/BuiltInProviderModelSelection"
            }
          ],
          "title": "Model"
        }
      },
      "additionalProperties": true,
      "type": "object",
      "required": [
        "trigger",
        "id",
        "messages",
        "model"
      ],
      "title": "ChatRegenerateMessage",
      "description": "Regenerate message extended with Phoenix-specific fields."
    },
    "ChatSubmitMessage": {
      "properties": {
        "trigger": {
          "type": "string",
          "const": "submit-message",
          "title": "Trigger",
          "default": "submit-message"
        },
        "id": {
          "type": "string",
          "title": "Id"
        },
        "messages": {
          "items": {
            "$ref": "#/$defs/AssistantMetadataUIMessage"
          },
          "type": "array",
          "title": "Messages"
        },
        "ingestTraces": {
          "type": "boolean",
          "title": "Ingesttraces",
          "default": false
        },
        "exportRemoteTraces": {
          "type": "boolean",
          "title": "Exportremotetraces",
          "default": false
        },
        "contexts": {
          "items": {
            "$ref": "#/$defs/ChatContext"
          },
          "type": "array",
          "title": "Contexts"
        },
        "editPermission": {
          "type": "string",
          "enum": [
            "manual",
            "bypass"
          ],
          "title": "Editpermission",
          "default": "manual"
        },
        "requestedSkills": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Requestedskills",
          "description": "Skills the user explicitly requested via the prompt's slash-command affordance. The server force-loads each available skill by injecting a synthetic load_skill tool call/result at the tail of the message history. Unknown or context-unavailable names are ignored."
        },
        "model": {
          "oneOf": [
            {
              "$ref": "#/$defs/CustomProviderModelSelection"
            },
            {
              "$ref": "#/$defs/BuiltInProviderModelSelection"
            }
          ],
          "title": "Model"
        }
      },
      "additionalProperties": true,
      "type": "object",
      "required": [
        "id",
        "messages",
        "model"
      ],
      "title": "ChatSubmitMessage",
      "description": "Submit message extended with Phoenix-specific fields."
    },
    "CodeEvaluatorContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "code_evaluator",
          "title": "Type"
        },
        "evaluatorNodeId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Evaluatornodeid"
        }
      },
      "type": "object",
      "required": [
        "type"
      ],
      "title": "CodeEvaluatorContext",
      "description": "Code-evaluator create/edit form mounted in the current browser route."
    },
    "CustomProviderModelSelection": {
      "properties": {
        "providerType": {
          "type": "string",
          "const": "custom",
          "title": "Providertype"
        },
        "providerId": {
          "type": "string",
          "title": "Providerid"
        },
        "modelName": {
          "type": "string",
          "title": "Modelname"
        }
      },
      "type": "object",
      "required": [
        "providerType",
        "providerId",
        "modelName"
      ],
      "title": "CustomProviderModelSelection",
      "description": "Chat against a stored custom provider record."
    },
    "DataUIPart": {
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^data-",
          "title": "Type"
        },
        "id": {
          "type": [
            "string",
            "null"
          ],
          "title": "Id"
        },
        "data": {
          "title": "Data"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "title": "DataUIPart",
      "description": "Data part with dynamic type based on data name."
    },
    "DatasetContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dataset",
          "title": "Type"
        },
        "datasetNodeId": {
          "type": "string",
          "title": "Datasetnodeid"
        },
        "datasetVersionNodeId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Datasetversionnodeid"
        }
      },
      "type": "object",
      "required": [
        "type",
        "datasetNodeId"
      ],
      "title": "DatasetContext",
      "description": "Dataset the user is currently viewing or has bound to a workflow.\n\nCarries the dataset's relay node id and, when known, the active version\nnode id. These IDs scope the create-form handoff link and the sampling of\nactive dataset examples used as prompt context; the dataset schema itself\nis open."
    },
    "DynamicToolApprovalRequestedPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "approval-requested",
          "title": "State",
          "default": "approval-requested"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input"
      ],
      "title": "DynamicToolApprovalRequestedPart",
      "description": "Dynamic tool part in approval-requested state (awaiting user decision)."
    },
    "DynamicToolApprovalRespondedPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "approval-responded",
          "title": "State",
          "default": "approval-responded"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input"
      ],
      "title": "DynamicToolApprovalRespondedPart",
      "description": "Dynamic tool part in approval-responded state (user approved/denied, execution pending)."
    },
    "DynamicToolInputAvailablePart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "input-available",
          "title": "State",
          "default": "input-available"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input"
      ],
      "title": "DynamicToolInputAvailablePart",
      "description": "Dynamic tool part in input-available state."
    },
    "DynamicToolInputStreamingPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "input-streaming",
          "title": "State",
          "default": "input-streaming"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId"
      ],
      "title": "DynamicToolInputStreamingPart",
      "description": "Dynamic tool part in input-streaming state."
    },
    "DynamicToolOutputAvailablePart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "output-available",
          "title": "State",
          "default": "output-available"
        },
        "input": {
          "title": "Input"
        },
        "output": {
          "title": "Output"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "preliminary": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Preliminary"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input",
        "output"
      ],
      "title": "DynamicToolOutputAvailablePart",
      "description": "Dynamic tool part in output-available state."
    },
    "DynamicToolOutputDeniedPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "output-denied",
          "title": "State",
          "default": "output-denied"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input"
      ],
      "title": "DynamicToolOutputDeniedPart",
      "description": "Dynamic tool part in output-denied state (tool was denied, terminal state)."
    },
    "DynamicToolOutputErrorPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "dynamic-tool",
          "title": "Type",
          "default": "dynamic-tool"
        },
        "toolName": {
          "type": "string",
          "title": "Toolname"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "output-error",
          "title": "State",
          "default": "output-error"
        },
        "input": {
          "title": "Input"
        },
        "errorText": {
          "type": "string",
          "title": "Errortext"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "toolName",
        "toolCallId",
        "input",
        "errorText"
      ],
      "title": "DynamicToolOutputErrorPart",
      "description": "Dynamic tool part in output-error state."
    },
    "FileUIPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "file",
          "title": "Type",
          "default": "file"
        },
        "mediaType": {
          "type": "string",
          "title": "Mediatype"
        },
        "filename": {
          "type": [
            "string",
            "null"
          ],
          "title": "Filename"
        },
        "url": {
          "type": "string",
          "title": "Url"
        },
        "providerMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Providermetadata"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "mediaType",
        "url"
      ],
      "title": "FileUIPart",
      "description": "A file part of a message."
    },
    "GraphQLContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "graphql",
          "title": "Type"
        },
        "mutationsEnabled": {
          "type": "boolean",
          "title": "Mutationsenabled"
        }
      },
      "type": "object",
      "required": [
        "type",
        "mutationsEnabled"
      ],
      "title": "GraphQLContext",
      "description": "GraphQL runtime state."
    },
    "LlmEvaluatorContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "llm_evaluator",
          "title": "Type"
        },
        "evaluatorNodeId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Evaluatornodeid"
        }
      },
      "type": "object",
      "required": [
        "type"
      ],
      "title": "LlmEvaluatorContext",
      "description": "LLM-evaluator create/edit form mounted in the current browser route."
    },
    "ModelProvider": {
      "type": "string",
      "enum": [
        "OPENAI",
        "AZURE_OPENAI",
        "ANTHROPIC",
        "GOOGLE",
        "DEEPSEEK",
        "XAI",
        "OLLAMA",
        "AWS",
        "CEREBRAS",
        "FIREWORKS",
        "GROQ",
        "MOONSHOT",
        "PERPLEXITY",
        "TOGETHER"
      ],
      "title": "ModelProvider"
    },
    "PlaygroundBuiltinModelContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "builtin",
          "title": "Type",
          "default": "builtin"
        },
        "provider": {
          "type": "string",
          "title": "Provider"
        },
        "modelName": {
          "type": "string",
          "title": "Modelname"
        }
      },
      "type": "object",
      "required": [
        "provider",
        "modelName"
      ],
      "title": "PlaygroundBuiltinModelContext",
      "description": "Built-in playground model selection."
    },
    "PlaygroundContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "playground",
          "title": "Type"
        },
        "recordExperiments": {
          "type": "boolean",
          "title": "Recordexperiments",
          "default": true
        },
        "repetitions": {
          "type": "integer",
          "title": "Repetitions",
          "default": 1
        },
        "nextExperimentScaffold": {
          "$ref": "#/$defs/PlaygroundExperimentScaffoldContext"
        },
        "instances": {
          "items": {
            "$ref": "#/$defs/PlaygroundInstanceContext"
          },
          "type": "array",
          "title": "Instances"
        },
        "evaluators": {
          "items": {
            "$ref": "#/$defs/PlaygroundEvaluatorContext"
          },
          "type": "array",
          "title": "Evaluators"
        }
      },
      "type": "object",
      "required": [
        "type"
      ],
      "title": "PlaygroundContext",
      "description": "Playground prompt editor state mounted in the current browser route."
    },
    "PlaygroundCustomProviderModelContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "custom",
          "title": "Type",
          "default": "custom"
        },
        "customProviderId": {
          "type": "string",
          "title": "Customproviderid"
        },
        "customProviderName": {
          "type": "string",
          "title": "Customprovidername"
        },
        "provider": {
          "type": "string",
          "title": "Provider"
        },
        "modelName": {
          "type": "string",
          "title": "Modelname"
        }
      },
      "type": "object",
      "required": [
        "customProviderId",
        "customProviderName",
        "provider",
        "modelName"
      ],
      "title": "PlaygroundCustomProviderModelContext",
      "description": "Custom-provider playground model selection."
    },
    "PlaygroundEvaluatorContext": {
      "properties": {
        "datasetEvaluatorId": {
          "type": "string",
          "title": "Datasetevaluatorid"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "kind": {
          "type": "string",
          "enum": [
            "LLM",
            "CODE",
            "BUILTIN"
          ],
          "title": "Kind"
        },
        "isBuiltin": {
          "type": "boolean",
          "title": "Isbuiltin"
        },
        "isApplied": {
          "type": "boolean",
          "title": "Isapplied"
        }
      },
      "type": "object",
      "required": [
        "datasetEvaluatorId",
        "name",
        "kind",
        "isBuiltin",
        "isApplied"
      ],
      "title": "PlaygroundEvaluatorContext",
      "description": "One dataset evaluator on the mounted playground's roster. ``name`` is\nuser-controlled; sanitize at every model-visible boundary."
    },
    "PlaygroundExperimentScaffoldContext": {
      "properties": {
        "name": {
          "type": [
            "string",
            "null"
          ],
          "title": "Name"
        },
        "description": {
          "type": [
            "string",
            "null"
          ],
          "title": "Description"
        },
        "hasMetadata": {
          "type": "boolean",
          "title": "Hasmetadata",
          "default": false
        }
      },
      "type": "object",
      "title": "PlaygroundExperimentScaffoldContext",
      "description": "Experiment name/description/metadata the user has staged for the playground's\n*next* dataset-backed run, before that run has started.\n\nThe playground UI lets the user pre-set how the next recorded run's experiment\nwill be named, described, and tagged (via the ``set_playground_experiment_recording``\ntool or the recording form). That staged state is surfaced here so the agent can\nsee what is already set and avoid re-staging it.\n\nField semantics:\n- ``name`` / ``description``: the staged values, surfaced to the model verbatim,\n  or ``None`` when the user has not staged them.\n- ``has_metadata``: a presence flag, not the value. Only *whether* metadata has\n  been staged is model-relevant (so the agent knows not to re-attach it); the\n  metadata object itself is deliberately kept out of the prompt.\n\nA field left unstaged (``None`` / ``False``) falls back to the server default when\nthe run starts. The scaffold is consumed once that next run begins."
    },
    "PlaygroundInstanceContext": {
      "properties": {
        "instanceId": {
          "type": "integer",
          "title": "Instanceid"
        },
        "model": {
          "oneOf": [
            {
              "$ref": "#/$defs/PlaygroundBuiltinModelContext"
            },
            {
              "$ref": "#/$defs/PlaygroundCustomProviderModelContext"
            }
          ],
          "title": "Model"
        },
        "experimentId": {
          "type": [
            "string",
            "null"
          ],
          "title": "Experimentid"
        }
      },
      "type": "object",
      "required": [
        "instanceId"
      ],
      "title": "PlaygroundInstanceContext",
      "description": "One mounted playground instance and its current model selection.\n\n``experiment_id`` carries the relay node id of the experiment produced by\nthis instance's last dataset-backed run, or ``None`` when the instance has\nnot produced one. Ephemeral experiments are included: they remain queryable\nuntil the server sweeps them ~24h after their last update."
    },
    "ProjectContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "project",
          "title": "Type"
        },
        "projectNodeId": {
          "type": "string",
          "title": "Projectnodeid"
        },
        "spanFilter": {
          "type": [
            "string",
            "null"
          ],
          "title": "Spanfilter"
        },
        "rootSpansOnly": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Rootspansonly"
        }
      },
      "type": "object",
      "required": [
        "type",
        "projectNodeId"
      ],
      "title": "ProjectContext",
      "description": "Project the user is currently viewing.\n\n``span_filter`` carries the project-scoped span filter expression when the\nspan filter field is mounted — empty string when the field is mounted with\nno condition applied, ``None`` when the field is not present at all.\n\n``root_spans_only`` carries the current state of the spans-table root vs.\nall toggle when that toggle is mounted — ``True`` when the table is\nrestricted to root spans, ``False`` when it shows every span, ``None``\nwhen the toggle is not present (e.g. on the traces tab)."
    },
    "ReasoningUIPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "reasoning",
          "title": "Type",
          "default": "reasoning"
        },
        "text": {
          "type": "string",
          "title": "Text"
        },
        "state": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "streaming",
            "done"
          ],
          "title": "State"
        },
        "providerMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Providermetadata"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "text"
      ],
      "title": "ReasoningUIPart",
      "description": "A reasoning part of a message."
    },
    "SourceDocumentUIPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "source-document",
          "title": "Type",
          "default": "source-document"
        },
        "sourceId": {
          "type": "string",
          "title": "Sourceid"
        },
        "mediaType": {
          "type": "string",
          "title": "Mediatype"
        },
        "title": {
          "type": "string",
          "title": "Title"
        },
        "filename": {
          "type": [
            "string",
            "null"
          ],
          "title": "Filename"
        },
        "providerMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Providermetadata"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "sourceId",
        "mediaType",
        "title"
      ],
      "title": "SourceDocumentUIPart",
      "description": "A document source part of a message."
    },
    "SourceUrlUIPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "source-url",
          "title": "Type",
          "default": "source-url"
        },
        "sourceId": {
          "type": "string",
          "title": "Sourceid"
        },
        "url": {
          "type": "string",
          "title": "Url"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "providerMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Providermetadata"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "sourceId",
        "url"
      ],
      "title": "SourceUrlUIPart",
      "description": "A source part of a message."
    },
    "StepStartUIPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "step-start",
          "title": "Type",
          "default": "step-start"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "title": "StepStartUIPart",
      "description": "A step boundary part of a message."
    },
    "SubagentsContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "subagents",
          "title": "Type"
        },
        "enabled": {
          "type": "boolean",
          "title": "Enabled"
        }
      },
      "type": "object",
      "required": [
        "type",
        "enabled"
      ],
      "title": "SubagentsContext",
      "description": "User's per-turn request to expose the subagent-spawning tool."
    },
    "TextUIPart": {
      "properties": {
        "type": {
          "type": "string",
          "const": "text",
          "title": "Type",
          "default": "text"
        },
        "text": {
          "type": "string",
          "title": "Text"
        },
        "state": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "streaming",
            "done"
          ],
          "title": "State"
        },
        "providerMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Providermetadata"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "text"
      ],
      "title": "TextUIPart",
      "description": "A text part of a message."
    },
    "ToolApprovalRequested": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "id"
      ],
      "title": "ToolApprovalRequested",
      "description": "Tool approval in requested state (awaiting user response)."
    },
    "ToolApprovalRequestedPart": {
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^tool-",
          "title": "Type"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "approval-requested",
          "title": "State",
          "default": "approval-requested"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "toolCallId"
      ],
      "title": "ToolApprovalRequestedPart",
      "description": "Tool part in approval-requested state (awaiting user decision)."
    },
    "ToolApprovalResponded": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "approved": {
          "type": "boolean",
          "title": "Approved"
        },
        "reason": {
          "type": [
            "string",
            "null"
          ],
          "title": "Reason"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "id",
        "approved"
      ],
      "title": "ToolApprovalResponded",
      "description": "Tool approval in responded state (user has approved or denied)."
    },
    "ToolApprovalRespondedPart": {
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^tool-",
          "title": "Type"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "approval-responded",
          "title": "State",
          "default": "approval-responded"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "toolCallId"
      ],
      "title": "ToolApprovalRespondedPart",
      "description": "Tool part in approval-responded state (user approved/denied, execution pending)."
    },
    "ToolInputAvailablePart": {
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^tool-",
          "title": "Type"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "input-available",
          "title": "State",
          "default": "input-available"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "toolCallId"
      ],
      "title": "ToolInputAvailablePart",
      "description": "Tool part in input-available state."
    },
    "ToolInputStreamingPart": {
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^tool-",
          "title": "Type"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "input-streaming",
          "title": "State",
          "default": "input-streaming"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "toolCallId"
      ],
      "title": "ToolInputStreamingPart",
      "description": "Tool part in input-streaming state."
    },
    "ToolOutputAvailablePart": {
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^tool-",
          "title": "Type"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "output-available",
          "title": "State",
          "default": "output-available"
        },
        "input": {
          "title": "Input"
        },
        "output": {
          "title": "Output"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "preliminary": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Preliminary"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "toolCallId"
      ],
      "title": "ToolOutputAvailablePart",
      "description": "Tool part in output-available state."
    },
    "ToolOutputDeniedPart": {
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^tool-",
          "title": "Type"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "output-denied",
          "title": "State",
          "default": "output-denied"
        },
        "input": {
          "title": "Input"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "toolCallId"
      ],
      "title": "ToolOutputDeniedPart",
      "description": "Tool part in output-denied state (tool was denied, terminal state)."
    },
    "ToolOutputErrorPart": {
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^tool-",
          "title": "Type"
        },
        "toolCallId": {
          "type": "string",
          "title": "Toolcallid"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "title": "Title"
        },
        "state": {
          "type": "string",
          "const": "output-error",
          "title": "State",
          "default": "output-error"
        },
        "input": {
          "title": "Input"
        },
        "rawInput": {
          "title": "Rawinput"
        },
        "errorText": {
          "type": "string",
          "title": "Errortext"
        },
        "providerExecuted": {
          "type": [
            "boolean",
            "null"
          ],
          "title": "Providerexecuted"
        },
        "callProviderMetadata": {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": [
            "object",
            "null"
          ],
          "title": "Callprovidermetadata"
        },
        "approval": {
          "anyOf": [
            {
              "$ref": "#/$defs/ToolApprovalRequested"
            },
            {
              "$ref": "#/$defs/ToolApprovalResponded"
            },
            {
              "type": "null"
            }
          ],
          "title": "Approval"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "type",
        "toolCallId",
        "errorText"
      ],
      "title": "ToolOutputErrorPart",
      "description": "Tool part in output-error state."
    },
    "TraceContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "trace",
          "title": "Type"
        },
        "projectNodeId": {
          "type": "string",
          "title": "Projectnodeid"
        },
        "otelTraceId": {
          "type": "string",
          "title": "Oteltraceid"
        }
      },
      "type": "object",
      "required": [
        "type",
        "projectNodeId",
        "otelTraceId"
      ],
      "title": "TraceContext"
    },
    "WebAccessContext": {
      "properties": {
        "type": {
          "type": "string",
          "const": "web_access",
          "title": "Type"
        },
        "enabled": {
          "type": "boolean",
          "title": "Enabled"
        }
      },
      "type": "object",
      "required": [
        "type",
        "enabled"
      ],
      "title": "WebAccessContext",
      "description": "User's per-turn request to expose web search / fetch tools."
    }
  }
}