Syllable Prompts API

Operations related to prompts. A prompt defines the behavior of an agent by delivering instructions to the LLM about how the agent should behave. A prompt can be linked to one or more agents. A prompt can also be linked to tools to allow an agent using the prompt to use them. For more information, see [Console docs](https://docs.syllable.ai/Resources/Prompts).

OpenAPI Specification

syllable-prompts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SyllableSDK Prompts API
  description: "\n# Syllable Platform SDK\n\nSyllable SDK gives you the power of awesome AI agentry. \U0001F680\n\n## Overview\n\nThe Syllable SDK provides a comprehensive set of tools and APIs to integrate powerful AI\ncapabilities into your communication applications. Whether you're building phone agents, chatbots,\nvirtual assistants, or any other AI-driven solutions, Syllable SDK has got you covered.\n\n## Features\n\n- **Agent Configuration**: Create and manage agents that can interact with users across various \nchannels.\n- **Channel Management**: Configure channels like SMS, web chat, and more to connect agents with \nusers.\n- **Custom Messages**: Set up custom messages that agents can deliver as greetings or responses.\n- **Conversations**: Track and manage conversations between users and agents, including session \nmanagement.\n- **Tools and Workflows**: Leverage tools and workflows to enhance agent capabilities, such as data \nprocessing and API calls.\n- **Data Sources**: Integrate data sources to provide agents with additional context and \ninformation.\n- **Insights and Analytics**: Analyze conversations and sessions to gain insights into user \ninteractions.\n- **Permissions and Security**: Manage permissions to control access to various features and \nfunctionalities.\n- **Language Support**: Define language groups to enable multilingual support for agents.\n- **Outbound Campaigns**: Create and manage outbound communication campaigns to reach users \neffectively.\n- **Session Labels**: Label sessions with evaluations of quality and descriptions of issues \nencountered.\n- **Incident Management**: Track and manage incidents related to agent interactions.\n"
  version: 0.0.3
servers:
- url: https://api.syllable.cloud
  description: API server
tags:
- name: prompts
  description: Operations related to prompts. A prompt defines the behavior of an           agent by delivering instructions to the LLM about how the agent should behave.           A prompt can be linked to one or more agents. A prompt can also be linked to tools to           allow an agent using the prompt to use them. For more information, see           [Console docs](https://docs.syllable.ai/Resources/Prompts).
paths:
  /api/v1/prompts/:
    get:
      tags:
      - prompts
      summary: Prompt List
      description: List the existing prompts
      operationId: prompts_list
      security:
      - APIKeyHeader: []
      parameters:
      - name: page
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          description: The page number from which to start (0-based)
          examples:
          - 0
          default: 0
          title: Page
        description: The page number from which to start (0-based)
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          description: The maximum number of items to return
          examples:
          - 25
          default: 25
          title: Limit
        description: The maximum number of items to return
      - name: search_fields
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PromptProperties'
          description: String names of fields to search. Correspond by index to search field values
          examples:
          - name
          default: []
          title: Search Fields
        description: String names of fields to search. Correspond by index to search field values
      - name: search_field_values
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
          description: Values of fields to search. Correspond by index to search fields. Unless field name contains "list", an individual search field value cannot be a list
          examples:
          - Some Object Name
          default: []
          title: Search Field Values
        description: Values of fields to search. Correspond by index to search fields. Unless field name contains "list", an individual search field value cannot be a list
      - name: order_by
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/PromptProperties'
          - type: 'null'
          description: The field whose value should be used to order the results
          examples:
          - name
          title: Order By
        description: The field whose value should be used to order the results
      - name: order_by_direction
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/OrderByDirection'
          - type: 'null'
          description: The direction in which to order the results
          title: Order By Direction
        description: The direction in which to order the results
      - name: fields
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/PromptProperties'
          - type: 'null'
          description: The fields to include in the response
          default: []
          title: Fields
        description: The fields to include in the response
      - name: start_datetime
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: The start datetime for filtering results
          examples:
          - '2023-01-01T00:00:00Z'
          title: Start Datetime
        description: The start datetime for filtering results
      - name: end_datetime
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: The end datetime for filtering results
          examples:
          - '2024-01-01T00:00:00Z'
          title: End Datetime
        description: The end datetime for filtering results
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResponse_PromptResponse_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK, models\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.prompts.list(page=0, limit=25, search_fields=[\n        models.PromptProperties.NAME,\n    ], search_field_values=[\n        \"Some Object Name\",\n    ], start_datetime=\"2023-01-01T00:00:00Z\", end_datetime=\"2024-01-01T00:00:00Z\")\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.prompts.list({\n    page: 0,\n    searchFields: [\n      \"name\",\n    ],\n    searchFieldValues: [\n      \"Some Object Name\",\n    ],\n    startDatetime: \"2023-01-01T00:00:00Z\",\n    endDatetime: \"2024-01-01T00:00:00Z\",\n  });\n\n  console.log(result);\n}\n\nrun();"
    post:
      tags:
      - prompts
      summary: Create Prompt
      description: Create a new prompt
      operationId: prompts_create
      security:
      - APIKeyHeader: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PromptCreateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.prompts.create(request={\n        \"name\": \"Weather Agent Prompt\",\n        \"description\": \"Prompt for a weather agent.\",\n        \"type\": \"prompt_v1\",\n        \"context\": \"You are a weather agent. Answer the user's questions about weather and nothing else.\",\n        \"tools\": [],\n        \"llm_config\": {\n            \"api_version\": \"2024-06-01\",\n            \"temperature\": 1,\n            \"seed\": 123,\n        },\n        \"session_end_tool_id\": 1,\n        \"edit_comments\": \"Updated prompt text to include requirement to not answer questions that aren't about weather.\",\n    })\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.prompts.create({\n    name: \"Weather Agent Prompt\",\n    description: \"Prompt for a weather agent.\",\n    type: \"prompt_v1\",\n    context: \"You are a weather agent. Answer the user's questions about weather and nothing else.\",\n    tools: [],\n    llmConfig: {\n      apiVersion: \"2024-06-01\",\n      temperature: 1,\n      seed: 123,\n    },\n    sessionEndToolId: 1,\n    editComments: \"Updated prompt text to include requirement to not answer questions that aren't about weather.\",\n  });\n\n  console.log(result);\n}\n\nrun();"
    put:
      tags:
      - prompts
      summary: Update Prompt
      description: Update an existing prompt
      operationId: prompts_update
      security:
      - APIKeyHeader: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PromptUpdateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.prompts.update(request={\n        \"name\": \"Weather Agent Prompt\",\n        \"description\": \"Prompt for a weather agent.\",\n        \"type\": \"prompt_v1\",\n        \"context\": \"You are a weather agent. Answer the user's questions about weather and nothing else.\",\n        \"tools\": [],\n        \"llm_config\": {\n            \"api_version\": \"2024-06-01\",\n            \"temperature\": 1,\n            \"seed\": 123,\n        },\n        \"session_end_tool_id\": 1,\n        \"edit_comments\": \"Updated prompt text to include requirement to not answer questions that aren't about weather.\",\n        \"id\": 1,\n    })\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.prompts.update({\n    name: \"Weather Agent Prompt\",\n    description: \"Prompt for a weather agent.\",\n    type: \"prompt_v1\",\n    context: \"You are a weather agent. Answer the user's questions about weather and nothing else.\",\n    tools: [],\n    llmConfig: {\n      apiVersion: \"2024-06-01\",\n      temperature: 1,\n      seed: 123,\n    },\n    sessionEndToolId: 1,\n    editComments: \"Updated prompt text to include requirement to not answer questions that aren't about weather.\",\n    id: 1,\n  });\n\n  console.log(result);\n}\n\nrun();"
  /api/v1/prompts/{prompt_id}:
    get:
      tags:
      - prompts
      summary: Get Prompt By Id
      description: Get a prompt by ID
      operationId: prompts_get_by_id
      security:
      - APIKeyHeader: []
      parameters:
      - name: prompt_id
        in: path
        required: true
        schema:
          type: integer
          title: Prompt Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.prompts.get_by_id(prompt_id=417330)\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.prompts.getById({\n    promptId: 417330,\n  });\n\n  console.log(result);\n}\n\nrun();"
    delete:
      tags:
      - prompts
      summary: Delete Prompt
      description: Delete a prompt
      operationId: prompts_delete
      security:
      - APIKeyHeader: []
      parameters:
      - name: prompt_id
        in: path
        required: true
        schema:
          type: integer
          title: Prompt Id
      - name: reason
        in: query
        required: true
        schema:
          type: string
          title: Reason
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.prompts.delete(prompt_id=982839, reason=\"<value>\")\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.prompts.delete({\n    promptId: 982839,\n    reason: \"<value>\",\n  });\n\n  console.log(result);\n}\n\nrun();"
  /api/v1/prompts/{prompt_id}/history:
    get:
      tags:
      - prompts
      summary: Get Prompt History
      description: Get a list of historical versions of a prompt by its ID
      operationId: prompts_history
      security:
      - APIKeyHeader: []
      parameters:
      - name: prompt_id
        in: path
        required: true
        schema:
          type: integer
          title: Prompt Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PromptHistory'
                title: Response Prompts History
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.prompts.prompts_history(prompt_id=922849)\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.prompts.promptsHistory({\n    promptId: 922849,\n  });\n\n  console.log(result);\n}\n\nrun();"
  /api/v1/prompts/llms/supported:
    get:
      tags:
      - prompts
      summary: Get Supported Llm Configs
      description: Get supported LLM configs.
      operationId: prompt_get_supported_llms
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SupportedLlm'
                type: array
                title: Response Prompt Get Supported Llms
      security:
      - APIKeyHeader: []
      x-codeSamples:
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom syllable_sdk import SyllableSDK\n\n\nwith SyllableSDK(\n    api_key_header=os.getenv(\"SYLLABLESDK_API_KEY_HEADER\", \"\"),\n) as ss_client:\n\n    res = ss_client.prompts.prompt_get_supported_llms()\n\n    # Handle response\n    print(res)"
      - lang: typescript
        label: Typescript (SDK)
        source: "import { SyllableSDK } from \"syllable-sdk\";\n\nconst syllableSDK = new SyllableSDK({\n  apiKeyHeader: process.env[\"SYLLABLESDK_API_KEY_HEADER\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await syllableSDK.prompts.promptGetSupportedLlms();\n\n  console.log(result);\n}\n\nrun();"
components:
  schemas:
    PromptResponse:
      properties:
        name:
          type: string
          title: Name
          description: The prompt name
          examples:
          - Weather Agent Prompt
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: The description of the prompt
          examples:
          - Prompt for a weather agent.
        type:
          type: string
          title: Type
          description: The type of the prompt
          examples:
          - prompt_v1
        context:
          anyOf:
          - type: string
          - type: 'null'
          title: Context
          description: The prompt text that will be sent to the LLM at the beginning of the conversation
          examples:
          - You are a weather agent. Answer the user's questions about weather and nothing else.
        tools:
          items:
            type: string
          type: array
          title: Tools
          description: Names of the tools to which the prompt has access (DEPRECATED - use information from full tools field instead)
          default: []
          deprecated: true
          examples:
          - hangup
          - summary
        llm_config:
          $ref: '#/components/schemas/PromptLlmConfig'
          description: The configuration for the LLM that the prompt uses
          examples:
          - model: gpt-4o
            provider: openai
            version: '2024-08-06'
        session_end_enabled:
          type: boolean
          title: Session End Enabled
          description: Whether session end functionality is enabled for this prompt
          default: false
          examples:
          - false
        session_end_tool_id:
          anyOf:
          - type: integer
          - type: 'null'
          title: Session End Tool Id
          description: ID of the optional session end tool associated with the prompt
          examples:
          - 1
        edit_comments:
          anyOf:
          - type: string
          - type: 'null'
          title: Edit Comments
          description: The comments for the most recent edit to the prompt
          examples:
          - Updated prompt text to include requirement to not answer questions that aren't about weather.
        id:
          type: integer
          title: Id
          description: The internal ID of the prompt
          examples:
          - 1
        last_updated:
          anyOf:
          - type: string
          - type: 'null'
          title: Last Updated
          description: The last updated date of the prompt
          examples:
          - '2024-01-01T12:00:00Z'
        last_updated_by:
          anyOf:
          - type: string
          - type: 'null'
          title: Last Updated By
          description: Email address of the user who most recently updated the prompt
          examples:
          - user@email.com
        session_end_tool:
          anyOf:
          - $ref: '#/components/schemas/DaoToolResponse'
          - type: 'null'
          description: The session end tool associated with the prompt
          examples: []
        agent_count:
          anyOf:
          - type: integer
          - type: 'null'
          title: Agent Count
          description: The number of agents using the prompt
          examples:
          - 5
        version_number:
          anyOf:
          - type: integer
          - type: 'null'
          title: Version Number
          description: The version number of the current version of the prompt
          examples:
          - 1
        tools_full:
          anyOf:
          - items:
              $ref: '#/components/schemas/ToolResponse'
            type: array
          - type: 'null'
          title: Tools Full
          description: Full definitions of tools to which the prompt has access
          examples: []
      type: object
      required:
      - name
      - type
      - llm_config
      - id
      - last_updated
      title: PromptResponse
      description: 'Response model for prompt operations.

        A prompt defines the behavior of an agent by delivering instructions to the LLM about how the

        agent should behave. A prompt can be linked to one or more agents. A prompt can also be linked to

        tools to allow an agent using it to use those tools. For more information, see

        [Console docs](https://docs.syllable.ai/Resources/Prompts).'
    PromptLlmProvider:
      type: string
      enum:
      - anthropic
      - azure_openai
      - google
      - openai
      title: PromptLlmProvider
      description: LLM API provider.
    CallAction:
      properties:
        if:
          anyOf:
          - oneOf:
            - $ref: '#/components/schemas/CelExpression'
            - $ref: '#/components/schemas/JMESPathExpression'
            discriminator:
              propertyName: type
              mapping:
                cel: '#/components/schemas/CelExpression'
                jmespath: '#/components/schemas/JMESPathExpression'
                jp: '#/components/schemas/JMESPathExpression'
          - $ref: '#/components/schemas/CaseExpression'
          - type: string
          - type: 'null'
          title: If
          description: 'Condition to decide whether this item executes. Supported expression forms: (1) JMESPath string (default for plain strings), (2) typed JMESPath object {"type":"jp"|"jmespath","expression":"..."}, or (3) typed CEL object {"type":"cel","expression":"..."}. Example JMESPath string: "inputs.can_sign_consent == `true`".'
          examples:
          - inputs.can_sign_consent == `true`
          - expression: inputs.can_sign_consent == `true`
            type: jp
          - expression: inputs.can_sign_consent == true
            type: cel
        action:
          type: string
          const: call
          title: Action
          default: call
        name:
          type: string
          title: Name
          description: The name of the tool to call.
        arguments:
          anyOf:
          - additionalProperties:
              $ref: '#/components/schemas/JsonValue'
            type: object
          - type: 'null'
          title: Arguments
          description: Optional arguments to pass to the tool (supports template strings)
        result:
          anyOf:
          - $ref: '#/components/schemas/CallResult'
          - type: 'null'
          description: Optional deterministic result-capture configuration. When present, selected fields from the tool response are saved into workflow state, so later transitions/conditions/validations can branch on them without the model re-deriving them from tool call history. Currently applied only when the call is routed in inject mode (arguments already complete); hinted/routed calls are not yet supported.
      type: object
      required:
      - name
      title: CallAction
    SayAction:
      properties:
        if:
          anyOf:
          - oneOf:
            - $ref: '#/components/schemas/CelExpression'
            - $ref: '#/components/schemas/JMESPathExpression'
            discriminator:
              propertyName: type
              mapping:
                cel: '#/components/schemas/CelExpression'
                jmespath: '#/components/schemas/JMESPathExpression'
                jp: '#/components/schemas/JMESPathExpression'
          - $ref: '#/components/schemas/CaseExpression'
          - type: string
          - type: 'null'
          title: If
          description: 'Condition to decide whether this item executes. Supported expression forms: (1) JMESPath string (default for plain strings), (2) typed JMESPath object {"type":"jp"|"jmespath","expression":"..."}, or (3) typed CEL object {"type":"cel","expression":"..."}. Example JMESPath string: "inputs.can_sign_consent == `true`".'
          examples:
          - inputs.can_sign_consent == `true`
          - expression: inputs.can_sign_consent == `true`
            type: jp
          - expression: inputs.can_sign_consent == true
            type: cel
        text:
          type: string
          title: Text
          description: Text to apply if the condition is true.
        action:
          type: string
          const: say
          title: Action
          default: say
        role:
          type: string
          enum:
          - user
          - assistant
          title: Role
          description: The role of the message.
          default: assistant
      type: object
      required:
      - text
      title: SayAction
    StepTools:
      properties:
        call:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Call
          description: Whether to force immediate tool call without user interaction.
        allow:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Allow
          description: List of allowed tool names for this step.
        allowGoToStep:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Allowgotostep
          description: Whether to expose the go_to_step escape hatch to the LLM. Defaults to disabled.
      type: object
      title: StepTools
      description: Configuration for tools available in a step.
    InputParameter:
      properties:
        name:
          type: string
          title: Name
          description: The name of the property.
        type:
          anyOf:
          - type: string
            enum:
            - string
            - number
            - integer
            - boolean
            - object
            - array
            - 'null'
          - type: 'null'
          title: Type
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        title:
          anyOf:
          - type: string
          - type: 'null'
          title: Title
        format:
          anyOf:
          - type: string
          - type: 'null'
          title: Format
        pattern:
          anyOf:
          - type: string
          - type: 'null'
          title: Pattern
        enum:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Enum
        examples:
          anyOf:
          - items:
              $ref: '#/components/schemas/JsonValue'
            type: array
          - type: 'null'
          title: Examples
        required:
          type: boolean
          title: Required
          default: true
      type: object
      required:
      - name
      title: InputParameter
    ToolArgumentLocation:
      type: string
      enum:
      - body
      - form
      - path
      - query
      title: ToolArgumentLocation
      description: 'The location of the argument in a tool HTTP request.

        ''body'' is used for JSON data in the POST request body.

        ''form'' is used for form data in the POST request body.

        ''path'' is used for URL path parameters.

        ''query'' is used for query parameters in the URL.'
    PromptHistory:
      properties:
        timestamp:
          type: string
          format: date-time
          title: Timestamp
          description: Timestamp of the change resulting in this version
          examples:
          - '2024-01-01T12:00:00Z'
        prompt_id:
          type: string
          title: Prompt Id
          description: ID of the prompt
          examples:
          - '1'
        version_number:
          type: integer
          title: Version Number
          description: Version number of this version. Starts at 1 when prompt is created, and incremented on each change.
          examples:
          - 1
        prompt_text:
          type: string
          title: Prompt Text
          description: Text of the prompt at this version
          examples:
          - You are a weather agent. Answer the user's questions about weather and nothing else.
        prompt_description:
          anyOf:
          - type: string
          - type: 'null'
          title: Prompt Description
          description: Description of the prompt at this version
          examples:
          - Prompt for a weather agent.
        prompt_name:
          type: string
          title: Prompt Name
          description: Name of the prompt at this version
          examples:
          - Weather Agent Prompt
        llm_config:
          anyOf:
          - $ref: '#/components/schemas/PromptLlmConfig'
          - type: 'null'
          description: String representation of LLM config for the prompt at this version
        comments:
          anyOf:
          - type: string
          - type: 'null'
          title: Comments
          description: Comments describing the change that resulted in this version
          examples:
          - Updated prompt text to include requirement to not answer questions that aren't about weather.
        user_email:
          type: string
          title: User Email
          description: Email address of the user who made the change that resulted in this version
          examples:
          - user@email.com
        linked_tools:
          items:
            $ref: '#/components/schemas/PromptHistoryLinkedTool'
          type: array
          title: Linked Tools
          description: Tools that were linked to this version of the prompt
          default: []
        session_end_tool:
          anyOf:
          - $ref: '#/components/schemas/PromptHistoryLinkedTool'
          - type: 'null'
          description: Session end tool that was configured on this version of the prompt, if any
        is_pre_enhancements:
          type: boolean
          title: Is Pre Enhancements
          description: Whether this version of the prompt was created before history of tool-prompt linking was tracked
          examples:
          - true

# --- truncated at 32 KB (102 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/syllable/refs/heads/main/openapi/syllable-prompts-api-openapi.yml