# Rollback Task Version

`POST /v1/tasks/{task_id}/versions/{version}/rollback`

Put an earlier published version of a task back into production.

That version becomes live **immediately** and **replaces the current draft**,
so any unpublished edits are lost. No new version is created. The restored
draft tracks each tool's latest published version, not the ones this version
pinned.

Authenticate with `Authorization: Bearer $TALQING_API_KEY`. Errors use the shared envelope: https://docs.talqing.com/api-reference/errors.md

## OpenAPI

```json
{
 "openapi":"3.1.0",
 "servers":[
  {
   "description":"Talqing API",
   "url":"https://api.talqing.com"
  }
 ],
 "paths":{
  "/v1/tasks/{task_id}/versions/{version}/rollback":{
   "post":{
    "description":"Put an earlier published version of a task back into production.\n\nThat version becomes live **immediately** and **replaces the current draft**,\nso any unpublished edits are lost. No new version is created. The restored\ndraft tracks each tool's latest published version, not the ones this version\npinned.",
    "operationId":"tasks.versions.rollback",
    "parameters":[
     {
      "in":"path",
      "name":"task_id",
      "required":true,
      "schema":{
       "format":"uuid",
       "title":"Task Id",
       "type":"string"
      }
     },
     {
      "in":"path",
      "name":"version",
      "required":true,
      "schema":{
       "title":"Version",
       "type":"integer"
      }
     }
    ],
    "responses":{
     "200":{
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/TaskResponse"
        }
       }
      },
      "description":"Successful Response"
     },
     "400":{
      "$ref":"#/components/responses/BadRequest"
     },
     "401":{
      "$ref":"#/components/responses/Unauthorized"
     },
     "403":{
      "$ref":"#/components/responses/Forbidden"
     },
     "404":{
      "$ref":"#/components/responses/NotFound"
     },
     "409":{
      "$ref":"#/components/responses/Conflict"
     },
     "422":{
      "$ref":"#/components/responses/ValidationFailed"
     },
     "default":{
      "$ref":"#/components/responses/Error"
     }
    },
    "security":[
     {
      "BearerAuth":[]
     },
     {
      "SessionCookie":[]
     }
    ],
    "summary":"Rollback Task Version",
    "tags":[
     "tasks"
    ]
   }
  }
 },
 "components":{
  "responses":{
   "BadRequest":{
    "content":{
     "application/json":{
      "schema":{
       "$ref":"#/components/schemas/ErrorResponse"
      }
     }
    },
    "description":"Well-formed, but rejected by a rule; `detail.errors` lists each problem."
   },
   "Conflict":{
    "content":{
     "application/json":{
      "schema":{
       "$ref":"#/components/schemas/ErrorResponse"
      }
     }
    },
    "description":"The resource's current state forbids this \u2014 a name already taken, a job already running."
   },
   "Error":{
    "content":{
     "application/json":{
      "schema":{
       "$ref":"#/components/schemas/ErrorResponse"
      }
     }
    },
    "description":"Unexpected error. Every error this API returns carries this body."
   },
   "Forbidden":{
    "content":{
     "application/json":{
      "schema":{
       "$ref":"#/components/schemas/ErrorResponse"
      }
     }
    },
    "description":"Authenticated, but this organization role may not perform the operation."
   },
   "NotFound":{
    "content":{
     "application/json":{
      "schema":{
       "$ref":"#/components/schemas/ErrorResponse"
      }
     }
    },
    "description":"No such resource in this organization."
   },
   "Unauthorized":{
    "content":{
     "application/json":{
      "schema":{
       "$ref":"#/components/schemas/ErrorResponse"
      }
     }
    },
    "description":"Missing credential, or one that is revoked or no longer a member of this organization."
   },
   "ValidationFailed":{
    "content":{
     "application/json":{
      "schema":{
       "$ref":"#/components/schemas/ErrorResponse"
      }
     }
    },
    "description":"The request did not match this operation's schema; `detail.errors` lists each field."
   }
  },
  "schemas":{
   "AddMessageConfig":{
    "additionalProperties":false,
    "properties":{
     "scope":{
      "default":"conversation",
      "enum":[
       "conversation",
       "turn"
      ],
      "title":"Scope",
      "type":"string"
     },
     "text":{
      "title":"Text",
      "type":"string"
     }
    },
    "required":[
     "text"
    ],
    "title":"AddMessageConfig",
    "type":"object"
   },
   "AddMessageOperation":{
    "additionalProperties":false,
    "properties":{
     "config":{
      "$ref":"#/components/schemas/AddMessageConfig"
     },
     "kind":{
      "const":"add_message",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"AddMessageOperation",
    "type":"object"
   },
   "BuiltinToolSpec":{
    "additionalProperties":false,
    "description":"A capability of the model itself, switched on for that model.\n\n`config` takes only the options that model's catalog entry declares.",
    "properties":{
     "config":{
      "additionalProperties":true,
      "title":"Config",
      "type":"object"
     },
     "type":{
      "title":"Type",
      "type":"string"
     }
    },
    "required":[
     "type"
    ],
    "title":"BuiltinToolSpec",
    "type":"object"
   },
   "CodeConfig":{
    "additionalProperties":false,
    "description":"TypeScript run on the code-exec service.",
    "properties":{
     "compiled_js":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "description":"Server-written build output. Do not send it; publishing compiles `source_ts`.",
      "title":"Compiled Js"
     },
     "source_ts":{
      "description":"Must `export default async function handler(input)` and return an object.",
      "title":"Source Ts",
      "type":"string"
     },
     "timeout":{
      "anyOf":[
       {
        "exclusiveMinimum":0.0,
        "maximum":30.0,
        "type":"number"
       },
       {
        "type":"null"
       }
      ],
      "description":"Seconds, not milliseconds. Defaults to 10.",
      "title":"Timeout"
     }
    },
    "required":[
     "source_ts"
    ],
    "title":"CodeConfig",
    "type":"object"
   },
   "CodeOperation":{
    "additionalProperties":false,
    "description":"Run TypeScript to transform or shape data an `http` operation cannot.\n\nIts sandbox has `fetch`, but reaching an API with it instead of an `http`\noperation costs a V8 isolate per call and hides the request from the editor.",
    "properties":{
     "background_execution":{
      "default":false,
      "title":"Background Execution",
      "type":"boolean"
     },
     "config":{
      "$ref":"#/components/schemas/CodeConfig"
     },
     "kind":{
      "const":"code",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     },
     "publish_fields":{
      "items":{
       "$ref":"#/components/schemas/PublishFieldRequest"
      },
      "title":"Publish Fields",
      "type":"array"
     },
     "silent":{
      "default":false,
      "title":"Silent",
      "type":"boolean"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"CodeOperation",
    "type":"object"
   },
   "EndCallConfig":{
    "additionalProperties":false,
    "description":"No settings: an `end_call` ends the call.",
    "properties":{},
    "title":"EndCallConfig",
    "type":"object"
   },
   "EndCallOperation":{
    "additionalProperties":false,
    "properties":{
     "config":{
      "$ref":"#/components/schemas/EndCallConfig"
     },
     "kind":{
      "const":"end_call",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     }
    },
    "required":[
     "kind"
    ],
    "title":"EndCallOperation",
    "type":"object"
   },
   "ErrorBody":{
    "description":"The structured half of our error contract: a human `message` plus a list\nof individual `errors` (used wherever we surface many problems at once,\nincluding tool publish, op-tree checks, and request validation). The global\nexception handlers normalize every API error to\n`{detail: {message, errors, code}}`, so SDKs can parse one shape consistently.",
    "properties":{
     "code":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "default":null,
      "description":"A stable identifier for this error, when it has one.",
      "title":"Code"
     },
     "errors":{
      "items":{
       "type":"string"
      },
      "title":"Errors",
      "type":"array"
     },
     "message":{
      "title":"Message",
      "type":"string"
     }
    },
    "required":[
     "message",
     "errors"
    ],
    "title":"ErrorBody",
    "type":"object"
   },
   "ErrorResponse":{
    "description":"The body of every error response, at every status code.",
    "properties":{
     "detail":{
      "$ref":"#/components/schemas/ErrorBody"
     }
    },
    "required":[
     "detail"
    ],
    "title":"ErrorResponse",
    "type":"object"
   },
   "FaqEntryInput":{
    "additionalProperties":false,
    "properties":{
     "answer":{
      "maxLength":2000,
      "minLength":1,
      "title":"Answer",
      "type":"string"
     },
     "question":{
      "maxLength":300,
      "minLength":1,
      "title":"Question",
      "type":"string"
     }
    },
    "required":[
     "question",
     "answer"
    ],
    "title":"FaqEntryInput",
    "type":"object"
   },
   "FaqSelection":{
    "additionalProperties":false,
    "description":"An FAQ the agent answers from: name one with `faq_id`, or define one inline.",
    "properties":{
     "faq":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/InlineFaq"
       },
       {
        "type":"null"
       }
      ]
     },
     "faq_id":{
      "anyOf":[
       {
        "format":"uuid",
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Faq Id"
     }
    },
    "title":"FaqSelection",
    "type":"object"
   },
   "FrontendRpcConfig":{
    "additionalProperties":false,
    "properties":{
     "method":{
      "pattern":"^[A-Za-z_][A-Za-z0-9_.-]*$",
      "title":"Method",
      "type":"string"
     },
     "payload":{
      "title":"Payload"
     },
     "timeout":{
      "anyOf":[
       {
        "exclusiveMinimum":0.0,
        "maximum":60.0,
        "type":"number"
       },
       {
        "type":"null"
       }
      ],
      "description":"Seconds, not milliseconds. Defaults to 5.",
      "title":"Timeout"
     }
    },
    "required":[
     "method"
    ],
    "title":"FrontendRpcConfig",
    "type":"object"
   },
   "FrontendRpcOperation":{
    "additionalProperties":false,
    "properties":{
     "background_execution":{
      "default":false,
      "title":"Background Execution",
      "type":"boolean"
     },
     "config":{
      "$ref":"#/components/schemas/FrontendRpcConfig"
     },
     "kind":{
      "const":"frontend_rpc",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     },
     "publish_fields":{
      "items":{
       "$ref":"#/components/schemas/PublishFieldRequest"
      },
      "title":"Publish Fields",
      "type":"array"
     },
     "silent":{
      "default":false,
      "title":"Silent",
      "type":"boolean"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"FrontendRpcOperation",
    "type":"object"
   },
   "GenerateReplyConfig":{
    "additionalProperties":false,
    "properties":{
     "instructions":{
      "title":"Instructions",
      "type":"string"
     },
     "wait_for_playback":{
      "default":false,
      "title":"Wait For Playback",
      "type":"boolean"
     }
    },
    "required":[
     "instructions"
    ],
    "title":"GenerateReplyConfig",
    "type":"object"
   },
   "GenerateReplyOperation":{
    "additionalProperties":false,
    "properties":{
     "config":{
      "$ref":"#/components/schemas/GenerateReplyConfig"
     },
     "kind":{
      "const":"generate_reply",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"GenerateReplyOperation",
    "type":"object"
   },
   "HandoffConfig":{
    "additionalProperties":false,
    "properties":{
     "agent_name":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "description":"A member of the team this call runs, by name.",
      "title":"Agent Name"
     },
     "context":{
      "default":"transcript",
      "enum":[
       "none",
       "summary",
       "transcript"
      ],
      "title":"Context",
      "type":"string"
     },
     "instructions":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "description":"What the target is told as it opens, when it has no greeting.",
      "title":"Instructions"
     },
     "message":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "description":"Spoken while connecting, before the target takes over.",
      "title":"Message"
     },
     "recent_turns":{
      "anyOf":[
       {
        "maximum":10.0,
        "minimum":1.0,
        "type":"integer"
       },
       {
        "type":"null"
       }
      ],
      "description":"Context 'summary' only: turns of this call that cross verbatim beside the summary. Defaults to 2.",
      "title":"Recent Turns"
     },
     "summary":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "description":"Required under context 'summary'. A template, not a request for one.",
      "title":"Summary"
     },
     "target_agent_id":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "description":"A published agent in this workspace.",
      "title":"Target Agent Id"
     }
    },
    "title":"HandoffConfig",
    "type":"object"
   },
   "HandoffOperation":{
    "additionalProperties":false,
    "properties":{
     "config":{
      "$ref":"#/components/schemas/HandoffConfig"
     },
     "kind":{
      "const":"handoff",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"HandoffOperation",
    "type":"object"
   },
   "HttpConfig":{
    "additionalProperties":false,
    "properties":{
     "body":{
      "title":"Body"
     },
     "headers":{
      "additionalProperties":{
       "type":"string"
      },
      "title":"Headers",
      "type":"object"
     },
     "method":{
      "enum":[
       "GET",
       "POST",
       "PUT",
       "PATCH",
       "DELETE"
      ],
      "title":"Method",
      "type":"string"
     },
     "query":{
      "additionalProperties":{
       "type":"string"
      },
      "title":"Query",
      "type":"object"
     },
     "timeout":{
      "anyOf":[
       {
        "exclusiveMinimum":0.0,
        "maximum":120.0,
        "type":"number"
       },
       {
        "type":"null"
       }
      ],
      "description":"Seconds, not milliseconds. Defaults to 20.",
      "title":"Timeout"
     },
     "url":{
      "title":"Url",
      "type":"string"
     }
    },
    "required":[
     "method",
     "url"
    ],
    "title":"HttpConfig",
    "type":"object"
   },
   "HttpOperation":{
    "additionalProperties":false,
    "description":"Call a REST API. The right operation for any plain request/response call.",
    "properties":{
     "background_execution":{
      "default":false,
      "title":"Background Execution",
      "type":"boolean"
     },
     "config":{
      "$ref":"#/components/schemas/HttpConfig"
     },
     "kind":{
      "const":"http",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     },
     "publish_fields":{
      "items":{
       "$ref":"#/components/schemas/PublishFieldRequest"
      },
      "title":"Publish Fields",
      "type":"array"
     },
     "silent":{
      "default":false,
      "title":"Silent",
      "type":"boolean"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"HttpOperation",
    "type":"object"
   },
   "IfConfig":{
    "additionalProperties":false,
    "properties":{
     "left":{
      "title":"Left"
     },
     "op":{
      "enum":[
       "eq",
       "neq",
       "gt",
       "lt",
       "exists",
       "in"
      ],
      "title":"Op",
      "type":"string"
     },
     "right":{
      "title":"Right"
     }
    },
    "required":[
     "left",
     "op"
    ],
    "title":"IfConfig",
    "type":"object"
   },
   "IfOperation":{
    "additionalProperties":false,
    "description":"The one branching operation, and the only one with children.\n\nBranches do not rejoin: an `if` is terminal in its chain, so work needed on\nboth paths is written once per path.",
    "properties":{
     "config":{
      "$ref":"#/components/schemas/IfConfig"
     },
     "else":{
      "anyOf":[
       {
        "items":{
         "discriminator":{
          "mapping":{
           "add_message":"#/components/schemas/AddMessageOperation",
           "code":"#/components/schemas/CodeOperation",
           "end_call":"#/components/schemas/EndCallOperation",
           "frontend_rpc":"#/components/schemas/FrontendRpcOperation",
           "generate_reply":"#/components/schemas/GenerateReplyOperation",
           "handoff":"#/components/schemas/HandoffOperation",
           "http":"#/components/schemas/HttpOperation",
           "if":"#/components/schemas/IfOperation",
           "say":"#/components/schemas/SayOperation",
           "send_dtmf":"#/components/schemas/SendDtmfOperation",
           "set_variable":"#/components/schemas/SetVariableOperation",
           "transfer":"#/components/schemas/TransferOperation"
          },
          "propertyName":"kind"
         },
         "oneOf":[
          {
           "$ref":"#/components/schemas/HttpOperation"
          },
          {
           "$ref":"#/components/schemas/CodeOperation"
          },
          {
           "$ref":"#/components/schemas/FrontendRpcOperation"
          },
          {
           "$ref":"#/components/schemas/IfOperation"
          },
          {
           "$ref":"#/components/schemas/SetVariableOperation"
          },
          {
           "$ref":"#/components/schemas/SayOperation"
          },
          {
           "$ref":"#/components/schemas/GenerateReplyOperation"
          },
          {
           "$ref":"#/components/schemas/AddMessageOperation"
          },
          {
           "$ref":"#/components/schemas/EndCallOperation"
          },
          {
           "$ref":"#/components/schemas/HandoffOperation"
          },
          {
           "$ref":"#/components/schemas/TransferOperation"
          },
          {
           "$ref":"#/components/schemas/SendDtmfOperation"
          }
         ]
        },
        "type":"array"
       },
       {
        "type":"null"
       }
      ],
      "title":"Else"
     },
     "kind":{
      "const":"if",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     },
     "then":{
      "anyOf":[
       {
        "items":{
         "discriminator":{
          "mapping":{
           "add_message":"#/components/schemas/AddMessageOperation",
           "code":"#/components/schemas/CodeOperation",
           "end_call":"#/components/schemas/EndCallOperation",
           "frontend_rpc":"#/components/schemas/FrontendRpcOperation",
           "generate_reply":"#/components/schemas/GenerateReplyOperation",
           "handoff":"#/components/schemas/HandoffOperation",
           "http":"#/components/schemas/HttpOperation",
           "if":"#/components/schemas/IfOperation",
           "say":"#/components/schemas/SayOperation",
           "send_dtmf":"#/components/schemas/SendDtmfOperation",
           "set_variable":"#/components/schemas/SetVariableOperation",
           "transfer":"#/components/schemas/TransferOperation"
          },
          "propertyName":"kind"
         },
         "oneOf":[
          {
           "$ref":"#/components/schemas/HttpOperation"
          },
          {
           "$ref":"#/components/schemas/CodeOperation"
          },
          {
           "$ref":"#/components/schemas/FrontendRpcOperation"
          },
          {
           "$ref":"#/components/schemas/IfOperation"
          },
          {
           "$ref":"#/components/schemas/SetVariableOperation"
          },
          {
           "$ref":"#/components/schemas/SayOperation"
          },
          {
           "$ref":"#/components/schemas/GenerateReplyOperation"
          },
          {
           "$ref":"#/components/schemas/AddMessageOperation"
          },
          {
           "$ref":"#/components/schemas/EndCallOperation"
          },
          {
           "$ref":"#/components/schemas/HandoffOperation"
          },
          {
           "$ref":"#/components/schemas/TransferOperation"
          },
          {
           "$ref":"#/components/schemas/SendDtmfOperation"
          }
         ]
        },
        "type":"array"
       },
       {
        "type":"null"
       }
      ],
      "title":"Then"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"IfOperation",
    "type":"object"
   },
   "InlineFaq":{
    "additionalProperties":false,
    "description":"An FAQ defined here rather than named.\n\nOn the call endpoints it is used for that call only; on the agent and task\nendpoints it is created as a real FAQ.",
    "properties":{
     "entries":{
      "items":{
       "$ref":"#/components/schemas/FaqEntryInput"
      },
      "maxItems":500,
      "minItems":1,
      "title":"Entries",
      "type":"array"
     },
     "name":{
      "maxLength":80,
      "minLength":1,
      "title":"Name",
      "type":"string"
     }
    },
    "required":[
     "name",
     "entries"
    ],
    "title":"InlineFaq",
    "type":"object"
   },
   "InlineMcpServer":{
    "additionalProperties":false,
    "description":"A remote MCP server defined here rather than named.\n\nAPI-key-shaped only \u2014 an OAuth server has to be an integration.\n`tools_namespace` prefixes every tool the model is shown: `crm` -> `crm_search`.",
    "properties":{
     "allowed_tools":{
      "anyOf":[
       {
        "items":{
         "type":"string"
        },
        "type":"array"
       },
       {
        "type":"null"
       }
      ],
      "title":"Allowed Tools"
     },
     "headers":{
      "additionalProperties":{
       "type":"string"
      },
      "title":"Headers",
      "type":"object"
     },
     "name":{
      "minLength":1,
      "title":"Name",
      "type":"string"
     },
     "tools_namespace":{
      "default":"",
      "pattern":"^$|^[a-z][a-z0-9_]{0,23}$",
      "title":"Tools Namespace",
      "type":"string"
     },
     "url":{
      "title":"Url",
      "type":"string"
     }
    },
    "required":[
     "name",
     "url"
    ],
    "title":"InlineMcpServer",
    "type":"object"
   },
   "InlineTool":{
    "additionalProperties":false,
    "description":"A tool defined here rather than named \u2014 the shape `create_tool` takes, with\nno id and no versions.\n\nOn the call endpoints it runs for that call only; on the agent endpoints it\nis created and published as a real tool.",
    "properties":{
     "description":{
      "default":"",
      "title":"Description",
      "type":"string"
     },
     "disable_interruptions":{
      "default":false,
      "title":"Disable Interruptions",
      "type":"boolean"
     },
     "json_schema":{
      "additionalProperties":true,
      "title":"Json Schema",
      "type":"object"
     },
     "long_running_task":{
      "default":false,
      "title":"Long Running Task",
      "type":"boolean"
     },
     "name":{
      "pattern":"^[a-zA-Z_][a-zA-Z0-9_]*$",
      "title":"Name",
      "type":"string"
     },
     "operations":{
      "items":{
       "discriminator":{
        "mapping":{
         "add_message":"#/components/schemas/AddMessageOperation",
         "code":"#/components/schemas/CodeOperation",
         "end_call":"#/components/schemas/EndCallOperation",
         "frontend_rpc":"#/components/schemas/FrontendRpcOperation",
         "generate_reply":"#/components/schemas/GenerateReplyOperation",
         "handoff":"#/components/schemas/HandoffOperation",
         "http":"#/components/schemas/HttpOperation",
         "if":"#/components/schemas/IfOperation",
         "say":"#/components/schemas/SayOperation",
         "send_dtmf":"#/components/schemas/SendDtmfOperation",
         "set_variable":"#/components/schemas/SetVariableOperation",
         "transfer":"#/components/schemas/TransferOperation"
        },
        "propertyName":"kind"
       },
       "oneOf":[
        {
         "$ref":"#/components/schemas/HttpOperation"
        },
        {
         "$ref":"#/components/schemas/CodeOperation"
        },
        {
         "$ref":"#/components/schemas/FrontendRpcOperation"
        },
        {
         "$ref":"#/components/schemas/IfOperation"
        },
        {
         "$ref":"#/components/schemas/SetVariableOperation"
        },
        {
         "$ref":"#/components/schemas/SayOperation"
        },
        {
         "$ref":"#/components/schemas/GenerateReplyOperation"
        },
        {
         "$ref":"#/components/schemas/AddMessageOperation"
        },
        {
         "$ref":"#/components/schemas/EndCallOperation"
        },
        {
         "$ref":"#/components/schemas/HandoffOperation"
        },
        {
         "$ref":"#/components/schemas/TransferOperation"
        },
        {
         "$ref":"#/components/schemas/SendDtmfOperation"
        }
       ]
      },
      "title":"Operations",
      "type":"array"
     },
     "silent":{
      "default":false,
      "title":"Silent",
      "type":"boolean"
     }
    },
    "required":[
     "name"
    ],
    "title":"InlineTool",
    "type":"object"
   },
   "LLMModelSpec":{
    "additionalProperties":false,
    "properties":{
     "builtin_tools":{
      "items":{
       "$ref":"#/components/schemas/BuiltinToolSpec"
      },
      "title":"Builtin Tools",
      "type":"array"
     },
     "hosts":{
      "anyOf":[
       {
        "items":{
         "type":"string"
        },
        "type":"array"
       },
       {
        "type":"null"
       }
      ],
      "description":"OpenRouter only: the hosts allowed to serve this model, from list_model_hosts; the fastest of them answers. Unset lets OpenRouter use any host.",
      "title":"Hosts"
     },
     "model":{
      "default":"gpt-5.6-luna",
      "title":"Model",
      "type":"string"
     },
     "priority":{
      "default":false,
      "description":"Run this model in its provider's priority (low-latency) lane, where its catalog entry declares one; on OpenRouter, any model (standard where no host sells one). Steadies the worst case rather than the average, and costs more per token.",
      "title":"Priority",
      "type":"boolean"
     },
     "provider":{
      "default":"openai",
      "title":"Provider",
      "type":"string"
     },
     "reasoning_effort":{
      "anyOf":[
       {
        "enum":[
         "none",
         "minimal",
         "low",
         "medium",
         "high"
        ],
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "description":"How long this model may think before it answers. Must be one of the values the model's catalog entry offers; unset means its fastest. On a voice call the caller hears every second of thinking as silence.",
      "title":"Reasoning Effort"
     }
    },
    "title":"LLMModelSpec",
    "type":"object"
   },
   "LLMSpec":{
    "additionalProperties":false,
    "properties":{
     "builtin_tools":{
      "items":{
       "$ref":"#/components/schemas/BuiltinToolSpec"
      },
      "title":"Builtin Tools",
      "type":"array"
     },
     "fallback":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/LLMModelSpec"
       },
       {
        "type":"null"
       }
      ]
     },
     "hosts":{
      "anyOf":[
       {
        "items":{
         "type":"string"
        },
        "type":"array"
       },
       {
        "type":"null"
       }
      ],
      "description":"OpenRouter only: the hosts allowed to serve this model, from list_model_hosts; the fastest of them answers. Unset lets OpenRouter use any host.",
      "title":"Hosts"
     },
     "model":{
      "default":"gpt-5.6-luna",
      "title":"Model",
      "type":"string"
     },
     "priority":{
      "default":false,
      "description":"Run this model in its provider's priority (low-latency) lane, where its catalog entry declares one; on OpenRouter, any model (standard where no host sells one). Steadies the worst case rather than the average, and costs more per token.",
      "title":"Priority",
      "type":"boolean"
     },
     "provider":{
      "default":"openai",
      "title":"Provider",
      "type":"string"
     },
     "reasoning_effort":{
      "anyOf":[
       {
        "enum":[
         "none",
         "minimal",
         "low",
         "medium",
         "high"
        ],
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "description":"How long this model may think before it answers. Must be one of the values the model's catalog entry offers; unset means its fastest. On a voice call the caller hears every second of thinking as silence.",
      "title":"Reasoning Effort"
     }
    },
    "title":"LLMSpec",
    "type":"object"
   },
   "McpSelection":{
    "additionalProperties":false,
    "description":"An MCP server this agent may call tools on: name an integration, or define\none inline.",
    "properties":{
     "integration_id":{
      "anyOf":[
       {
        "format":"uuid",
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Integration Id"
     },
     "mcp":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/InlineMcpServer"
       },
       {
        "type":"null"
       }
      ]
     }
    },
    "title":"McpSelection",
    "type":"object"
   },
   "PublishFieldRequest":{
    "additionalProperties":false,
    "properties":{
     "key":{
      "anyOf":[
       {
        "pattern":"^[A-Za-z_][A-Za-z0-9_]*$",
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Key"
     },
     "path":{
      "minLength":1,
      "title":"Path",
      "type":"string"
     },
     "store":{
      "enum":[
       "tooldata",
       "userdata"
      ],
      "title":"Store",
      "type":"string"
     }
    },
    "required":[
     "path",
     "store"
    ],
    "title":"PublishFieldRequest",
    "type":"object"
   },
   "SayConfig":{
    "additionalProperties":false,
    "properties":{
     "text":{
      "title":"Text",
      "type":"string"
     },
     "wait_for_playback":{
      "default":false,
      "title":"Wait For Playback",
      "type":"boolean"
     }
    },
    "required":[
     "text"
    ],
    "title":"SayConfig",
    "type":"object"
   },
   "SayOperation":{
    "additionalProperties":false,
    "properties":{
     "config":{
      "$ref":"#/components/schemas/SayConfig"
     },
     "kind":{
      "const":"say",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"SayOperation",
    "type":"object"
   },
   "SendDtmfConfig":{
    "additionalProperties":false,
    "properties":{
     "digits":{
      "description":"Keys to press: 0-9, *, #, A-D. 'w' waits half a second and 'W' one second, for menus that need a pause. Supports {{args.*}} and {{userdata.*}}.",
      "maxLength":64,
      "minLength":1,
      "title":"Digits",
      "type":"string"
     }
    },
    "required":[
     "digits"
    ],
    "title":"SendDtmfConfig",
    "type":"object"
   },
   "SendDtmfOperation":{
    "additionalProperties":false,
    "description":"Press keys on the call's keypad, for an IVR on the other end.\n\nNot terminal, unlike `end_call` and `transfer`: sending digits and then\nsaying something is the normal case, so a chain carries on afterwards.",
    "properties":{
     "config":{
      "$ref":"#/components/schemas/SendDtmfConfig"
     },
     "kind":{
      "const":"send_dtmf",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"SendDtmfOperation",
    "type":"object"
   },
   "SetVariableConfig":{
    "additionalProperties":false,
    "properties":{
     "key":{
      "title":"Key",
      "type":"string"
     },
     "store":{
      "enum":[
       "tooldata",
       "userdata"
      ],
      "title":"Store",
      "type":"string"
     },
     "value":{
      "title":"Value"
     }
    },
    "required":[
     "key",
     "value",
     "store"
    ],
    "title":"SetVariableConfig",
    "type":"object"
   },
   "SetVariableOperation":{
    "additionalProperties":false,
    "properties":{
     "config":{
      "$ref":"#/components/schemas/SetVariableConfig"
     },
     "kind":{
      "const":"set_variable",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"SetVariableOperation",
    "type":"object"
   },
   "TaskConfig":{
    "additionalProperties":false,
    "description":"LiveKit's `AgentTask`: an agent with a typed result, on someone else's stack.\n\nIt declares no channel, no media and no greeting. Entered by an agent it\nspeaks with that call's voice and hears with its ears; run on its own from\n`POST /task-runs` it is an LLM with tools and nobody to talk to. Which\nof the two happens is the caller's, never the task's.",
    "properties":{
     "faqs":{
      "description":"FAQs the agent answers from: questions go in the prompt, answers are fetched on demand.",
      "items":{
       "$ref":"#/components/schemas/FaqSelection"
      },
      "maxItems":10,
      "title":"Faqs",
      "type":"array"
     },
     "finish_without_result_description":{
      "default":"Finish without result only if you have failed to achieve the goal of this task and would like to give up rather than continue.",
      "description":"Description of `finish_without_result`, the tool that abandons a task an agent entered. Narrow it if the task gives up too readily. Unused by a standalone run.",
      "minLength":1,
      "title":"Finish Without Result Description",
      "type":"string"
     },
     "llm":{
      "$ref":"#/components/schemas/LLMSpec"
     },
     "max_steps":{
      "default":25,
      "description":"How many LLM -> tools -> LLM rounds a standalone run may take. A round, not a tool call: four tools in one reply cost one step. Entered by an agent, the calling call's own limit applies instead.",
      "maximum":50.0,
      "minimum":1.0,
      "title":"Max Steps",
      "type":"integer"
     },
     "mcps":{
      "description":"MCP servers whose tools may be called \u2014 each named by the integration that holds its credential, or defined inline. Which of a named server's tools may be called is the integration's own `allowed_tools`, not this list.",
      "items":{
       "$ref":"#/components/schemas/McpSelection"
      },
      "title":"Mcps",
      "type":"array"
     },
     "name":{
      "description":"Unique in the workspace.",
      "minLength":1,
      "title":"Name",
      "type":"string"
     },
     "on_enter":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/ToolSelection"
       },
       {
        "type":"null"
       }
      ]
     },
     "on_exit":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/ToolSelection"
       },
       {
        "type":"null"
       }
      ]
     },
     "on_user_turn_completed":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/ToolSelection"
       },
       {
        "type":"null"
       }
      ]
     },
     "output":{
      "description":"The typed value this task produces: up to 25 top-level fields, nesting up to 4 levels and 100 fields in all. The model finishes by calling a `submit_result` tool built from them. Publishing needs at least one.",
      "items":{
       "$ref":"#/components/schemas/TaskOutputField"
      },
      "maxItems":25,
      "title":"Output",
      "type":"array"
     },
     "prompt":{
      "default":"",
      "description":"The system prompt. `{{vars.name}}` is substituted from the values the run was started with \u2014 or, entered by an agent, from the call's own values and the arguments the model supplied.",
      "title":"Prompt",
      "type":"string"
     },
     "submit_result_description":{
      "default":"Submit results if you are sure that you have achieved the goal of this task",
      "description":"Description of the generated `submit_result` tool - what the call is, where the output fields describe the values.",
      "minLength":1,
      "title":"Submit Result Description",
      "type":"string"
     },
     "timeout_seconds":{
      "default":300,
      "description":"How long this may take before it is abandoned. Entered by an agent it is the only bound on how long the caller is held, so keep it short on a voice agent.",
      "maximum":600.0,
      "minimum":10.0,
      "title":"Timeout Seconds",
      "type":"integer"
     },
     "timezone":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "description":"The IANA timezone this clock runs on, e.g. 'Asia/Kolkata'. Set it and the prompt and tools can read {{system_vars.now}}, {{system_vars.date}} and {{system_vars.time}}. Required only if one of those is used.",
      "title":"Timezone"
     },
     "tools":{
      "description":"Tools the model may call. Publishing pins each one to the tool version live at that moment, so republishing a tool does not change this until it is published again.",
      "items":{
       "$ref":"#/components/schemas/ToolSelection"
      },
      "title":"Tools",
      "type":"array"
     },
     "vars":{
      "description":"The inputs this task takes, read as {{vars.name}} in the prompt and in its tools. Declare only what the caller or the model must supply: anything the task can read for itself ({{userdata.*}}, {{system_vars.*}}) it should read in its prompt instead.",
      "items":{
       "$ref":"#/components/schemas/VarDeclaration"
      },
      "title":"Vars",
      "type":"array"
     }
    },
    "required":[
     "name"
    ],
    "title":"TaskConfig",
    "type":"object"
   },
   "TaskOutputField":{
    "additionalProperties":false,
    "description":"One value the model must produce: a scalar, an object of named fields, or an array.",
    "properties":{
     "description":{
      "description":"What the model should put here, and what to send when it cannot find out. This is the field's description in the tool schema, so it is literally the prompt for this value.",
      "minLength":1,
      "title":"Description",
      "type":"string"
     },
     "enum":{
      "anyOf":[
       {
        "items":{
         "type":"string"
        },
        "type":"array"
       },
       {
        "type":"null"
       }
      ],
      "description":"Allowed values. Strings only.",
      "title":"Enum"
     },
     "fields":{
      "anyOf":[
       {
        "items":{
         "$ref":"#/components/schemas/TaskOutputField"
        },
        "type":"array"
       },
       {
        "type":"null"
       }
      ],
      "description":"An object's fields.",
      "title":"Fields"
     },
     "items":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/TaskOutputItem"
       },
       {
        "type":"null"
       }
      ],
      "description":"An array's element."
     },
     "name":{
      "description":"Identifier for this value, as it appears in the run's `output` and anywhere the run is consumed. Lower-case letters, digits and underscores.",
      "pattern":"^[a-z][a-z0-9_]{0,39}$",
      "title":"Name",
      "type":"string"
     },
     "required":{
      "default":true,
      "description":"Refuse a null for this field. Turn it off for a value the model may legitimately fail to find, and say in the description when to send null.",
      "title":"Required",
      "type":"boolean"
     },
     "type":{
      "default":"string",
      "description":"The shape of the value. `object` takes `fields`; `array` takes `items`.",
      "enum":[
       "string",
       "boolean",
       "integer",
       "number",
       "object",
       "array"
      ],
      "title":"Type",
      "type":"string"
     }
    },
    "required":[
     "name",
     "description"
    ],
    "title":"TaskOutputField",
    "type":"object"
   },
   "TaskOutputItem":{
    "additionalProperties":false,
    "description":"What an array holds: one element's shape. Unnamed, and never null.",
    "properties":{
     "description":{
      "default":"",
      "description":"What one element is.",
      "title":"Description",
      "type":"string"
     },
     "enum":{
      "anyOf":[
       {
        "items":{
         "type":"string"
        },
        "type":"array"
       },
       {
        "type":"null"
       }
      ],
      "description":"Allowed values. Strings only.",
      "title":"Enum"
     },
     "fields":{
      "anyOf":[
       {
        "items":{
         "$ref":"#/components/schemas/TaskOutputField"
        },
        "type":"array"
       },
       {
        "type":"null"
       }
      ],
      "description":"An object element's fields.",
      "title":"Fields"
     },
     "items":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/TaskOutputItem"
       },
       {
        "type":"null"
       }
      ],
      "description":"A nested array's element."
     },
     "type":{
      "default":"string",
      "enum":[
       "string",
       "boolean",
       "integer",
       "number",
       "object",
       "array"
      ],
      "title":"Type",
      "type":"string"
     }
    },
    "title":"TaskOutputItem",
    "type":"object"
   },
   "TaskResponse":{
    "properties":{
     "config":{
      "$ref":"#/components/schemas/TaskConfig"
     },
     "created_at":{
      "format":"date-time",
      "title":"Created At",
      "type":"string"
     },
     "created_by":{
      "anyOf":[
       {
        "format":"uuid",
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Created By"
     },
     "id":{
      "format":"uuid",
      "title":"Id",
      "type":"string"
     },
     "last_run":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/TaskRunSummary"
       },
       {
        "type":"null"
       }
      ]
     },
     "published_at":{
      "anyOf":[
       {
        "format":"date-time",
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Published At"
     },
     "published_version":{
      "anyOf":[
       {
        "type":"integer"
       },
       {
        "type":"null"
       }
      ],
      "title":"Published Version"
     },
     "updated_at":{
      "format":"date-time",
      "title":"Updated At",
      "type":"string"
     },
     "versions":{
      "anyOf":[
       {
        "items":{
         "$ref":"#/components/schemas/TaskVersionResponse"
        },
        "type":"array"
       },
       {
        "type":"null"
       }
      ],
      "title":"Versions"
     }
    },
    "required":[
     "id",
     "config",
     "published_version",
     "published_at",
     "created_at",
     "updated_at",
     "created_by",
     "versions",
     "last_run"
    ],
    "title":"TaskResponse",
    "type":"object"
   },
   "TaskRunError":{
    "properties":{
     "message":{
      "title":"Message",
      "type":"string"
     },
     "type":{
      "enum":[
       "invalid_input",
       "no_output",
       "step_limit",
       "timeout",
       "provider_error",
       "configuration",
       "platform",
       "canceled"
      ],
      "title":"Type",
      "type":"string"
     }
    },
    "required":[
     "type",
     "message"
    ],
    "title":"TaskRunError",
    "type":"object"
   },
   "TaskRunSummary":{
    "description":"A run without its trace, config or inputs: the list item, the\n`task_run.completed` webhook body and a task's `last_run`, one shape for all three.\n\n`error` is the same object a full run carries rather than a bare type, so\none reader answers \"how did it go\" for both.",
    "properties":{
     "background":{
      "default":false,
      "title":"Background",
      "type":"boolean"
     },
     "billing_status":{
      "default":"pending",
      "title":"Billing Status",
      "type":"string"
     },
     "content_deleted_at":{
      "anyOf":[
       {
        "format":"date-time",
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Content Deleted At"
     },
     "content_expires_at":{
      "anyOf":[
       {
        "format":"date-time",
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Content Expires At"
     },
     "created_at":{
      "format":"date-time",
      "title":"Created At",
      "type":"string"
     },
     "duration_ms":{
      "anyOf":[
       {
        "type":"integer"
       },
       {
        "type":"null"
       }
      ],
      "title":"Duration Ms"
     },
     "ended_at":{
      "anyOf":[
       {
        "format":"date-time",
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Ended At"
     },
     "error":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/TaskRunError"
       },
       {
        "type":"null"
       }
      ]
     },
     "id":{
      "format":"uuid",
      "title":"Id",
      "type":"string"
     },
     "idempotency_key":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Idempotency Key"
     },
     "metadata":{
      "additionalProperties":{
       "type":"string"
      },
      "title":"Metadata",
      "type":"object"
     },
     "output":{
      "anyOf":[
       {
        "additionalProperties":true,
        "type":"object"
       },
       {
        "type":"null"
       }
      ],
      "title":"Output"
     },
     "provider_cost":{
      "anyOf":[
       {
        "type":"number"
       },
       {
        "type":"null"
       }
      ],
      "title":"Provider Cost"
     },
     "started_at":{
      "anyOf":[
       {
        "format":"date-time",
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Started At"
     },
     "status":{
      "enum":[
       "queued",
       "running",
       "completed",
       "failed",
       "canceled"
      ],
      "title":"Status",
      "type":"string"
     },
     "task_id":{
      "anyOf":[
       {
        "format":"uuid",
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Task Id"
     },
     "task_name":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Task Name"
     },
     "task_version":{
      "anyOf":[
       {
        "type":"integer"
       },
       {
        "type":"null"
       }
      ],
      "title":"Task Version"
     },
     "tries":{
      "default":0,
      "title":"Tries",
      "type":"integer"
     }
    },
    "required":[
     "id",
     "task_id",
     "task_name",
     "task_version",
     "status",
     "error",
     "output",
     "metadata",
     "idempotency_key",
     "background",
     "tries",
     "created_at",
     "started_at",
     "ended_at",
     "duration_ms",
     "provider_cost",
     "billing_status",
     "content_deleted_at",
     "content_expires_at"
    ],
    "title":"TaskRunSummary",
    "type":"object"
   },
   "TaskVersionResponse":{
    "properties":{
     "published_at":{
      "format":"date-time",
      "title":"Published At",
      "type":"string"
     },
     "published_by":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Published By"
     },
     "version":{
      "title":"Version",
      "type":"integer"
     }
    },
    "required":[
     "version",
     "published_at"
    ],
    "title":"TaskVersionResponse",
    "type":"object"
   },
   "ToolSelection":{
    "additionalProperties":false,
    "description":"A tool the agent may run: name one with `tool_id`, or define one inline.",
    "properties":{
     "tool":{
      "anyOf":[
       {
        "$ref":"#/components/schemas/InlineTool"
       },
       {
        "type":"null"
       }
      ]
     },
     "tool_id":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Tool Id"
     },
     "tool_version":{
      "anyOf":[
       {
        "type":"integer"
       },
       {
        "type":"null"
       }
      ],
      "title":"Tool Version"
     }
    },
    "title":"ToolSelection",
    "type":"object"
   },
   "TransferConfig":{
    "additionalProperties":false,
    "properties":{
     "destination":{
      "description":"A literal phone number in full international format, e.g. +14155550101.",
      "title":"Destination",
      "type":"string"
     },
     "mode":{
      "default":"cold",
      "enum":[
       "cold",
       "warm"
      ],
      "title":"Mode",
      "type":"string"
     },
     "on_failure":{
      "default":"continue",
      "enum":[
       "continue",
       "end_call"
      ],
      "title":"On Failure",
      "type":"string"
     },
     "ringing_timeout":{
      "anyOf":[
       {
        "maximum":120.0,
        "minimum":5.0,
        "type":"number"
       },
       {
        "type":"null"
       }
      ],
      "description":"Seconds the destination may ring. Defaults to 30.",
      "title":"Ringing Timeout"
     }
    },
    "required":[
     "destination"
    ],
    "title":"TransferConfig",
    "type":"object"
   },
   "TransferOperation":{
    "additionalProperties":false,
    "properties":{
     "config":{
      "$ref":"#/components/schemas/TransferConfig"
     },
     "kind":{
      "const":"transfer",
      "title":"Kind",
      "type":"string"
     },
     "on_error":{
      "default":"abort",
      "enum":[
       "abort",
       "continue"
      ],
      "title":"On Error",
      "type":"string"
     }
    },
    "required":[
     "kind",
     "config"
    ],
    "title":"TransferOperation",
    "type":"object"
   },
   "VarDeclaration":{
    "additionalProperties":false,
    "description":"One `{{vars.*}}` variable this agent reads, and what it falls back to.\n\nThe request that starts the session supplies values that override `default`;\nan inbound phone call or message has none, so `default` is what resolves.",
    "properties":{
     "default":{
      "anyOf":[
       {
        "type":"string"
       },
       {
        "type":"null"
       }
      ],
      "title":"Default"
     },
     "description":{
      "default":"",
      "title":"Description",
      "type":"string"
     },
     "name":{
      "minLength":1,
      "title":"Name",
      "type":"string"
     },
     "required":{
      "default":false,
      "description":"Refuse the session rather than resolve this to nothing; a `default` satisfies it. An inbound phone call carries no request to supply values, so a voice agent requiring a variable with no default cannot be assigned to a phone number.",
      "title":"Required",
      "type":"boolean"
     },
     "type":{
      "default":"text",
      "description":"'file' takes a PDF on a task run. Tasks only.",
      "enum":[
       "text",
       "file"
      ],
      "title":"Type",
      "type":"string"
     },
     "untrusted":{
      "default":false,
      "description":"Third-party content: given to the model as data, never templated. Tasks only.",
      "title":"Untrusted",
      "type":"boolean"
     }
    },
    "required":[
     "name"
    ],
    "title":"VarDeclaration",
    "type":"object"
   }
  }
 }
}
```
