Sarj AI Developer API Scenario Generation API

The scenario-generation API from Sarj AI Developer API — 5 operation(s) for scenario-generation.

Operations 6

GET /v1/beta/generation-logs/metadata Get Suggestion Metadata #
POST /v1/beta/generation-logs Generate Scenario #
GET /v1/beta/generation-logs/{log_id} Get Generation Log #
PATCH /v1/beta/generation-logs/{log_id} Link Scenario #
GET /v1/beta/generation-logs/{log_id}/status Get Generation Status #
GET /v1/beta/generation-logs/by-scenario/{scenario_id} Get By Scenario Id #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sarj-ai-developer-api-scenario-generation-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sarj-ai-developer-api-scenario-generation-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Sarj.ai Voice Scenario Generation API
  version: 1.0.0
tags:
- name: scenario-generation
paths:
  /v1/beta/generation-logs/metadata:
    get:
      tags:
      - scenario-generation
      summary: Get Suggestion Metadata
      operationId: scenarioGenerationGetSuggestionMetadata
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestionMetadataResponse'
  /v1/beta/generation-logs:
    post:
      tags:
      - scenario-generation
      summary: Generate Scenario
      operationId: scenarioGenerationGenerateScenario
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateScenarioRequest'
        required: true
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateScenarioResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/beta/generation-logs/{log_id}:
    get:
      tags:
      - scenario-generation
      summary: Get Generation Log
      operationId: scenarioGenerationGetGenerationLog
      parameters:
      - name: log_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          description: Generation Log ID
          title: Log Id
        description: Generation Log ID
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScenarioGenerationLog'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - scenario-generation
      summary: Link Scenario
      operationId: scenarioGenerationLinkScenario
      parameters:
      - name: log_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          description: Generation Log ID
          title: Log Id
        description: Generation Log ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkScenarioRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScenarioGenerationLog'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/beta/generation-logs/{log_id}/status:
    get:
      tags:
      - scenario-generation
      summary: Get Generation Status
      operationId: scenarioGenerationGetGenerationStatus
      parameters:
      - name: log_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          description: Generation Log ID
          title: Log Id
        description: Generation Log ID
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerationStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/beta/generation-logs/by-scenario/{scenario_id}:
    get:
      tags:
      - scenario-generation
      summary: Get By Scenario Id
      operationId: scenarioGenerationGetByScenarioId
      parameters:
      - name: scenario_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          description: Custom Scenario ID
          title: Scenario Id
        description: Custom Scenario ID
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ScenarioGenerationLog'
                - type: 'null'
                title: Response Scenariogenerationgetbyscenarioid
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    LanguageSettings:
      properties:
        language:
          $ref: '#/components/schemas/Language'
      type: object
      required:
      - language
      title: LanguageSettings
    ZohoDeskCreateTicketToolParameters:
      properties:
        tool_slug:
          type: string
          const: zoho-desk-create-ticket
          title: Tool Slug
        ticket_creation_cases:
          items:
            type: string
          type: array
          minItems: 1
          title: Ticket Creation Cases
          description: List of cases when a ticket should be created.
          examples:
          - - When the request needs follow-up
            - When there is a technical complaint
            - When the customer requests a callback
        ticket_formatting_instructions:
          type: string
          title: Ticket Formatting Instructions
          description: Instructions for formatting the ticket content
          examples:
          - Include customer name, issue description, and requested resolution
        can_read_previous_tickets:
          type: boolean
          title: Can Read Previous Tickets
          description: When enabled, exposes a companion tool that searches the customer's previous Zoho Desk tickets so the agent can identify existing clients and reference prior context.
          default: false
      type: object
      required:
      - tool_slug
      - ticket_creation_cases
      - ticket_formatting_instructions
      title: ZohoDeskCreateTicketToolParameters
      description: 'Creates a support ticket in Zoho Desk for follow-up actions.


        WHEN TO USE: When an issue needs to be tracked or followed up by the support team.

        BEST PRACTICES:

        - Define specific cases that warrant ticket creation

        - Provide clear formatting instructions for ticket content

        - Include instructions on what data to capture in the ticket


        NOTE: Requires a functional Zoho Desk integration configured for the organization.'
    AgentProvidedVariable_Literal__string___:
      properties:
        source:
          type: string
          const: agent_provided
          title: Source
        description:
          type: string
          title: Description
        type:
          type: string
          const: string
          title: Type
        required:
          type: boolean
          title: Required
        allowed_values:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Allowed Values
      type: object
      required:
      - source
      - description
      - type
      - required
      title: AgentProvidedVariable[Literal['string']]
    DataExtractionDisabled:
      properties:
        type:
          type: string
          const: disabled
          title: Type
          default: disabled
      type: object
      title: DataExtractionDisabled
    SallaCustomerFacingFunctionality:
      type: string
      enum:
      - browse-products
      - browse-logistics
      - create-update-order
      - read-previous-orders
      title: SallaCustomerFacingFunctionality
      description: Enum for functionalities exposed via the integration APIs. Simplifies UI/UX and bundles required tools under a single functionality.
    FixType:
      type: string
      enum:
      - phone
      - text
      - time_range
      - boolean
      - link
      title: FixType
      description: 'Types of fix actions for verification_needed suggestions.


        - phone, text: Support inline editing in sidebar

        - time_range, boolean, link: Click to scroll to actual field (complex inputs)'
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    WeekDay:
      type: integer
      enum:
      - 0
      - 1
      - 2
      - 3
      - 4
      - 5
      - 6
      title: WeekDay
    NumberVariable:
      properties:
        type:
          type: string
          const: number
          title: Type
        name:
          type: string
          minLength: 1
          title: Name
        config:
          anyOf:
          - $ref: '#/components/schemas/FixedValue_Union_int__float__'
          - $ref: '#/components/schemas/ScenarioVariable'
          - $ref: '#/components/schemas/AgentProvidedVariable_Literal__number___'
          title: Config
      type: object
      required:
      - type
      - name
      - config
      title: NumberVariable
    GenerationInput:
      properties:
        user_prompt:
          type: string
          maxLength: 10000
          minLength: 50
          title: User Prompt
        languages:
          items:
            $ref: '#/components/schemas/Language'
          type: array
          minItems: 1
          title: Languages
      type: object
      required:
      - user_prompt
      title: GenerationInput
    TimeRangeDayConfiguration:
      properties:
        start_time:
          type: string
          pattern: ^([01]\d|2[0-3]):([0-5]\d)$
          title: Start Time
          description: Start time in HH:MM format (24-hour)
        end_time:
          type: string
          pattern: ^([01]\d|2[0-3]):([0-5]\d)$
          title: End Time
          description: End time in HH:MM format (24-hour)
      type: object
      required:
      - start_time
      - end_time
      title: TimeRangeDayConfiguration
    ScenarioOptionalField:
      properties:
        id:
          type: string
          maxLength: 100
          minLength: 1
          title: Id
        source:
          type: string
          const: scenario
          title: Source
          default: scenario
        type:
          type: string
          enum:
          - text
          - number
          - boolean
          title: Type
        required:
          type: boolean
          const: false
          title: Required
          default: false
        default:
          anyOf:
          - {}
          - type: 'null'
          title: Default
      type: object
      required:
      - id
      - type
      title: ScenarioOptionalField
    SuggestionSection:
      type: string
      enum:
      - first_message
      - prompt
      - template_variables
      - data_extraction
      - language
      - knowledge_bases
      - agent
      - success_criteria
      - tools
      title: SuggestionSection
      description: 'Form sections that a suggestion can relate to.


        IMPORTANT: Use the EXACT string values below - no variations!


        - `first_message` - First message/greeting configuration

        - `prompt` - Agent prompt/instructions

        - `template_variables` - Input data given to the agent (NOT "template_variable")

        - `data_extraction` - Data extraction settings

        - `language` - Language configuration

        - `knowledge_bases` - Knowledge base attachments (NOT "knowledge_base")

        - `agent` - Agent Profile selection

        - `success_criteria` - Success criteria configuration

        - `tools` - Tools configurations (NOT "tool")'
    ResourceLinkingSuggestion:
      properties:
        section:
          $ref: '#/components/schemas/SuggestionSection'
          description: The form section this suggestion relates to
          examples:
          - tools
          - prompt
          - knowledge_bases
        title:
          type: string
          minLength: 1
          title: Title
          description: Short headline (3-6 words). REQUIRED, will be REJECTED without it!
          examples:
          - Update Transfer Number
          - Connect Salla Store
          - Add Product FAQs
        message:
          type: string
          title: Message
          description: Explanation with context (1-2 sentences)
          examples:
          - Replace the placeholder with your actual support hotline.
          - You mentioned using Salla for orders. Connect your Salla store to enable order management.
        type:
          type: string
          const: resource_linking
          title: Type
          default: resource_linking
        tool_slug:
          anyOf:
          - $ref: '#/components/schemas/ToolTypeSlug'
          - type: 'null'
          description: 'Tool identifier. Valid values: transfer-to-human, zoho-desk-create-ticket, end-call, code-switching, custom-api, salla-tools, ivr-navigation'
          examples:
          - custom-api
          - transfer-to-human
          - salla-tools
        action_label:
          anyOf:
          - type: string
          - type: 'null'
          title: Action Label
          description: Button text for external page actions. Must pair with action_url.
          examples:
          - Create Knowledge Base
          - Set Up Salla
          - Configure Webhooks
        action_url:
          anyOf:
          - $ref: '#/components/schemas/ActionUrl'
          - type: 'null'
          description: External page URL. Must pair with action_label. See ActionUrl for valid values.
          examples:
          - /knowledge-bases
          - /integrations
          - /webhooks
      type: object
      required:
      - section
      - title
      - message
      title: ResourceLinkingSuggestion
      description: "Opportunities: LLM-suggested enhancements the user did NOT ask for.\n\nShows in \"Opportunities\" section (green, dismissable).\n\nUSE WHEN external resource creation would enhance the scenario:\n- Knowledge base: \"Create a knowledge base with your product FAQs\"\n- Integration setup: \"Set up Zoho Desk integration to enable ticket creation\"\n- NOTE: Attaching KBs is done from the scenario form, not the KB page.\n\nCRITICAL DISTINCTION:\n- User explicitly mentioned integration but it's NOT connected → use verification_needed\n- LLM suggests integration as enhancement (user didn't ask) → use this type\n\nEXTERNAL vs SAME-PAGE:\n- For EXTERNAL pages: include action_label + action_url (shows button) (The only valid urls are: /knowledge-bases, /integrations, /webhooks)\n- For SAME page sections: NO action_url (clicking row scrolls to section)\n\nHTTP Tool is NOT an integration! It's added in Tools section (same page).\nOnly Salla and Zoho need `/integrations` because they require external OAuth setup.\n\nExample JSON (external page - has button):\n{\"type\": \"resource_linking\", \"section\": \"knowledge_bases\", \"title\": \"Add Product FAQs\",\n \"message\": \"Create a knowledge base with pricing info.\",\n \"action_label\": \"Create Knowledge Base\", \"action_url\": \"/knowledge-bases\"}\n\n{\"type\": \"resource_linking\", \"section\": \"tools\", \"title\": \"Set Up Salla Store\",\n \"message\": \"Connect your Salla store for real-time order status.\",\n \"action_label\": \"Set Up Salla\", \"action_url\": \"/integrations\"}\n\nExample JSON (same page - no button, clicking scrolls):\n{\"type\": \"resource_linking\", \"section\": \"tools\", \"title\": \"Connect to Your POS\",\n \"message\": \"Add an HTTP Tool in the Tools section to connect to your ordering API.\",\n \"tool_slug\": \"custom-api\"}"
    SuggestionType:
      type: string
      enum:
      - assumption_made
      - verification_needed
      - resource_linking
      title: SuggestionType
      description: 'Types of suggestions to help users refine generated scenarios.


        DO NOT SUGGEST (obvious or already visible):

        - Tool configurations visible in form

        - Standard defaults (back-channeling 0.6, timeout 15s)

        - "Review the generated prompt/criteria" (user will see it)

        - Language selection (user controls via UI checkboxes)

        - Voice selection (user controls in Agent section)


        SUGGESTION LIMITS:

        - Maximum 3-5 suggestions total

        - 1-2 verification_needed (critical placeholders only)

        - 1-2 assumption_made (significant business decisions only)

        - 0-2 resource_linking (genuinely valuable enhancements)


        LANGUAGE RULES:

        - NEVER use abbreviations: Write "Knowledge Base" not "KB", "Point of Sale" not "POS"

        - Use clear, user-friendly language


        MULTIPLE SUGGESTIONS:

        You can have multiple suggestions per section. Example: 2 verification_needed for "tools" is fine.'
    WorkingHoursEnabledV2:
      properties:
        enabled:
          type: boolean
          const: true
          title: Enabled
          default: true
        schedule_configuration:
          $ref: '#/components/schemas/ScheduleConfiguration'
      type: object
      required:
      - schedule_configuration
      title: WorkingHoursEnabledV2
    HTTPMethod:
      type: string
      enum:
      - GET
      - POST
      - PUT
      - DELETE
      title: HTTPMethod
    ScheduleCallbackToolParameters:
      properties:
        tool_slug:
          type: string
          const: schedule-callback
          title: Tool Slug
        trigger_conditions:
          items:
            type: string
            minLength: 1
          type: array
          minItems: 1
          title: Trigger Conditions
          description: The single list of cases when a callback should be offered or recorded. The agent reads it during the call to decide whether to offer one, and the post-call analyst reads the same list to infer one when follow_up_inference is set. Callbacks, whether agreed during the call or created by the call report afterwards, can be at most max_wait ahead (the scenario's max_wait, never more than 29 days). A condition that implies a later date (for example a reminder the day before a payment due next quarter) is not supported and will be refused.
          examples:
          - - When the customer asks to be called back later
            - When the customer says now is not a good time
            - When the person who can decide is unavailable
        confirmation_messages:
          additionalProperties:
            anyOf:
            - type: string
            - type: 'null'
          propertyNames:
            $ref: '#/components/schemas/Language'
          type: object
          title: Confirmation Messages
          description: 'Optional message confirming the agreed callback time, per language. Use {time} as the placeholder: it renders as the bare day and clock phrase ("3:30 PM", "tomorrow 3:30 PM"), so the template supplies the approximation word itself ("around {time}"). A bare {time} promises a minute-exact call the scheduler does not guarantee.'
          examples:
          - ar: تمام، بنتواصل معك {time} تقريباً
            en: Great, we'll call you back around {time}.
            ur: ٹھیک ہے، ہم آپ کو {time} کے قریب کال کریں گے۔
        offer_callbacks_in_call:
          type: boolean
          title: Offer Callbacks In Call
          description: Whether the agent can agree a callback time during the call. When off, the tool is never registered with the agent (the agent never offers or promises live, and the scenario prompt handles the conversation normally); a customer's explicit request is still caught by the post-call analyst and booked.
          default: true
        requires_human_support:
          type: boolean
          title: Requires Human Support
          description: Whether a human must be reachable during the callback. The AI still places the callback; enabling this constrains callback times to the transfer-to-human tool's working hours so an escalation mid-callback can succeed.
          default: false
        max_reschedule_attempts:
          type: integer
          maximum: 10.0
          exclusiveMinimum: 0.0
          title: Max Reschedule Attempts
          description: How many times a callback may be rescheduled across its lifetime (the customer answers a callback and asks to move it again). Changes of mind within one call do not count.
          default: 3
          examples:
          - 3
        min_wait:
          type: string
          format: duration
          title: Min Wait
          description: 'Shortest wait between now and a callback. Requests sooner than this are moved to now plus this wait, and the agent confirms the moved time. The same wait is re-applied after the call: a promise made early in a long call can fall under the platform''s minimum booking lead by the time the callback is booked, and the booker moves it to now plus this wait rather than dropping it.'
          default: PT15M
          examples:
          - PT15M
        max_wait:
          type: string
          format: duration
          title: Max Wait
          description: Longest wait between now and a callback. Requests beyond this are refused rather than clamped, and the agent asks for a nearer time. The ceiling sits below the platform's booking horizon, and booking time only moves closer to the promised time, so a promise at the ceiling stays inside the horizon.
          default: P29D
          examples:
          - P29D
        default_callback_hour:
          type: integer
          maximum: 23.0
          minimum: 0.0
          title: Default Callback Hour
          description: Local hour used when the analyst derives a callback time from a day-only anchor
          default: 10
          examples:
          - 10
        follow_up_inference:
          anyOf:
          - $ref: '#/components/schemas/FollowUpInference'
          - type: 'null'
          description: When set, the post-call analyst may also infer follow-up callbacks from the transcript. Leave unset to record only what the agent agreed in the call.
      additionalProperties: false
      type: object
      required:
      - tool_slug
      - trigger_conditions
      title: ScheduleCallbackToolParameters
      description: "Records a request to call the customer back later, during or after the call.\n\nWHEN TO USE: Only when the prompt mentions calling the customer back at a later time\n(customer asks for a callback, the right person is unavailable, a follow-up was\npromised). Never add it by default.\nBEST PRACTICES:\n- Define 2-4 trigger conditions in English; they are evaluation signals, not spoken text\n- Phrase confirmations as an approximate time (\"around 3:30\"): the exact dial time is\n  decided later by the scheduler, so never promise a minute-exact call\n- Use `{time}` in the confirmation messages as the placeholder for the agreed time.\n  It is substituted with the bare day and clock phrase only (\"3:30 PM\", \"tomorrow\n  3:30 PM\"), so the template itself must carry the approximation word: write\n  \"around {time}\", never a bare \"{time}\"\n- Set `requires_human_support` when the callback needs a human to be available too;\n  it requires a transfer-to-human tool with working hours configured\n- Configure `follow_up_inference` only when the business also wants callbacks the\n  customer never asked for\n- Set `default_callback_hour` to the local hour the analyst should book when the\n  call fixes only a day (\"call me tomorrow\"), not a time of day\n\nCALLING WINDOW: the callback calling window is the scenario's schedule configuration\n(the `ScheduleConfig` row behind `schedule_config_id`, resolved through\n`ScheduleConfigStore.resolve_scenario_default`). That is a single daily start/end\nwindow with a timezone that may be null, in which case the scenario's own timezone\napplies. The scenario may have no schedule configuration, a disabled one, or one with\nno retry_window: all three mean no window, and only min/max wait apply. There is no\nper-weekday map here, unlike the transfer tool's working hours (adding one is a\ntracked follow-up). The tool carries no window and no timezone of its own.\n\nNOTE: This tool only records the request; scheduling and dialing happen after the call."
    GenerateScenarioRequest:
      properties:
        prompt:
          type: string
          maxLength: 10000
          minLength: 50
          title: Prompt
        languages:
          items:
            $ref: '#/components/schemas/Language'
          type: array
          minItems: 1
          title: Languages
          description: List of languages to generate the scenario for (e.g., ['ar', 'en'])
      type: object
      required:
      - prompt
      title: GenerateScenarioRequest
    ToolTypeSlug:
      type: string
      enum:
      - code-switching
      - collect-digits
      - transfer-to-human
      - end-call
      - zoho-desk-create-ticket
      - custom-api
      - salla-tools
      - ivr-navigation
      - voicemail-detection
      - schedule-callback
      title: ToolTypeSlug
    LLMInstruction:
      properties:
        instruction:
          type: string
          title: Instruction
          description: Instructions for the agent on what to say or do when voicemail is detected
          examples:
          - Leave a brief message introducing yourself and asking them to call back at their earliest convenience.
      type: object
      required:
      - instruction
      title: LLMInstruction
    WorkingHoursDisabled:
      properties:
        enabled:
          type: boolean
          const: false
          title: Enabled
          default: false
      type: object
      title: WorkingHoursDisabled
    ForLanguageSettings:
      properties:
        default:
          type: boolean
          title: Default
          description: Whether this is the default language. Exactly one should be True.
          default: false
        language_settings:
          $ref: '#/components/schemas/LanguageSettings'
          description: Language configuration including the language code (ar, en)
        first_message:
          type: string
          title: First Message
          description: Opening message the AI says when call starts.
          examples:
          - مرحباً {{customer_name}}، معك نور. كيف أقدر أساعدك؟
        disable_first_message:
          type: boolean
          title: Disable First Message
          description: Prevents the agent from uttering the first message.
          default: false
        prompt:
          type: string
          title: Prompt
          description: Full system prompt for the AI. Should include role, objectives, and instructions.
        agent_profile_id:
          type: string
          title: Agent Profile Id
          description: ID of the agent profile to use for voice and behavior settings
          default: ''
      type: object
      required:
      - language_settings
      - first_message
      - prompt
      title: ForLanguageSettings
      description: 'Language-specific configuration for the scenario.


        Each scenario must have at least one language setting. The prompt and first_message

        should be in the specified language with proper tashkeel for Arabic.'
    GenerateScenarioResponse:
      properties:
        task_id:
          type: string
          title: Task Id
        generation_log_id:
          type: string
          title: Generation Log Id
      type: object
      required:
      - task_id
      - generation_log_id
      title: GenerateScenarioResponse
    GlobalVariable:
      properties:
        source:
          type: string
          const: global_variable
          title: Source
        variable_id:
          type: string
          minLength: 1
          title: Variable Id
      type: object
      required:
      - source
      - variable_id
      title: GlobalVariable
    GenerationStatusResponse:
      properties:
        generation_log:
          $ref: '#/components/schemas/ScenarioGenerationLog'
        has_running_task:
          type: boolean
          title: Has Running Task
      type: object
      required:
      - generation_log
      - has_running_task
      title: GenerationStatusResponse
    AgentProvidedVariable_Literal__boolean___:
      properties:
        source:
          type: string
          const: agent_provided
          title: Source
        description:
          type: string
          title: Description
        type:
          type: string
          const: boolean
          title: Type
        required:
          type: boolean
          title: Required
        allowed_values:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Allowed Values
      type: object
      required:
      - source
      - description
      - type
      - required
      title: AgentProvidedVariable[Literal['boolean']]
    FixedValue_Union_int__float__:
      properties:
        source:
          type: string
          const: fixed
          title: Source
        value:
          anyOf:
          - type: integer
          - type: number
          title: Value
        is_encrypted:
          type: boolean
          title: Is Encrypted
          default: false
      type: object
      required:
      - source
      - value
      title: FixedValue[Union[int, float]]
    ScenarioTab:
      type: string
      enum:
      - scenario
      - configuration
      title: ScenarioTab
    FixedValue_bool_:
      properties:
        source:
          type: string
          const: fixed
          title: Source
        value:
          type: boolean
          title: Value
        is_encrypted:
          type: boolean
          title: Is Encrypted
          default: false
      type: object
      required:
      - source
      - value
      title: FixedValue[bool]
    Instructions:
      properties:
        pre_processing_message:
          additionalProperties:
            anyOf:
            - type: string
            - type: 'null'
          propertyNames:
            $ref: '#/components/schemas/Language'
          type: object
          title: Pre Processing Message
        failure_message:
          additionalProperties:
            anyOf:
            - type: string
            - type: 'null'
          propertyNames:
            $ref: '#/components/schemas/Language'
          type: object
          title: Failure Message
        response_processing:
          type: string
          title: Response Processing
      type: object
      required:
      - response_processing
      title: Instructions
    IVRNavigationToolParameters:
      properties:
        tool_slug:
          type: string
          const: ivr-navigation
          title: Tool Slug
        cooldown_seconds:
          type: number
          minimum: 0.0
          title: Cooldown Seconds
          description: The minimum wait time (in seconds) required between sending distinct DTMF codes to prevent signal flooding.
          default: 1.0
          examples:
          - 1.5
      type: object
      required:
      - tool_slug
      title: IVRNavigationToolParameters
      description: 'Enables the agent to navigate Interactive Voice Response (IVR) phone menus.


        This tool allows the agent to press keys (send DTMF tones) when prompted by

        a call recipient (e.g., "Press 1 for Sales", "Enter extension number").'
    VoicemailDetectionToolParameters:
      properties:
        tool_slug:
          type: string
          const: voicemail-detection
          title: Tool Slug
        hangup_when_voicemail_detected:
          type: boolean
          title: Hangup When Voicemail Detected
          default: true
        message_before_hangup:
          anyOf:
          - $ref: '#/components/schemas/LLMInstruction'
          - additionalProperties:
              anyOf:
              - type: string
              - type: 'null'
            propertyNames:
              $ref: '#/components/schemas/Language'
            type: object
          - type: 'null'
          title: Message Before Hangup
      type: object
      required:
      - tool_slug
      title: VoicemailDetectionToolParameters
      description: 'Detects when the call has reached a vo

# --- truncated at 32 KB (87 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sarj-ai-developer-api/refs/heads/main/openapi/sarj-ai-developer-api-scenario-generation-api-openapi.yml