{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/phoenix/json-schema/phoenix-summarize-request-schema.json",
  "title": "_SummarizeRequest",
  "description": "Body for POST /agents/{agent_id}/sessions/{session_id}/summary.\n\nCarries the Vercel-style messages array; the backend owns the prompt and\nthe structured-output tool schema.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/phoenix-chat-api-openapi.yml#/components/schemas/_SummarizeRequest",
  "properties": {
    "ingestTraces": {
      "type": "boolean",
      "title": "Ingesttraces",
      "default": false
    },
    "exportRemoteTraces": {
      "type": "boolean",
      "title": "Exportremotetraces",
      "default": false
    },
    "messages": {
      "items": {
        "$ref": "#/$defs/UIMessage"
      },
      "type": "array",
      "title": "Messages"
    },
    "model": {
      "oneOf": [
        {
          "$ref": "#/$defs/CustomProviderModelSelection"
        },
        {
          "$ref": "#/$defs/BuiltInProviderModelSelection"
        }
      ],
      "title": "Model"
    }
  },
  "type": "object",
  "required": [
    "messages",
    "model"
  ],
  "$defs": {
    "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."
    },
    "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."
    },
    "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."
    },
    "ModelProvider": {
      "type": "string",
      "enum": [
        "OPENAI",
        "AZURE_OPENAI",
        "ANTHROPIC",
        "GOOGLE",
        "DEEPSEEK",
        "XAI",
        "OLLAMA",
        "AWS",
        "CEREBRAS",
        "FIREWORKS",
        "GROQ",
        "MOONSHOT",
        "PERPLEXITY",
        "TOGETHER"
      ],
      "title": "ModelProvider"
    },
    "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."
    },
    "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."
    },
    "UIMessage": {
      "properties": {
        "id": {
          "type": "string",
          "title": "Id"
        },
        "role": {
          "type": "string",
          "enum": [
            "system",
            "user",
            "assistant"
          ],
          "title": "Role"
        },
        "metadata": {
          "title": "Metadata"
        },
        "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": "UIMessage",
      "description": "A message as displayed in the UI by Vercel AI Elements."
    }
  }
}