Sarj AI Developer API Scenario Templates API

The scenario-templates API from Sarj AI Developer API — 6 operation(s) for scenario-templates.

Operations 11

POST /v1/scenario-templates/upload-url Generate Icon Upload Url #
GET /v1/scenario-templates/industries List Scenario Industries #
POST /v1/scenario-templates/industries Create Scenario Industry #
GET /v1/scenario-templates/industries/{industry_id}/templates List Scenario Templates By Industry #
PUT /v1/scenario-templates/industries/{industry_id} Update Scenario Industry #
GET /v1/scenario-templates/industries/{industry_id} Get Scenario Industry #
DELETE /v1/scenario-templates/industries/{industry_id} Delete Scenario Industry #
PUT /v1/scenario-templates/templates/{template_id} Update Scenario Template #
GET /v1/scenario-templates/templates/{template_id} Get Scenario Template #
DELETE /v1/scenario-templates/templates/{template_id} Delete Scenario Template #
POST /v1/scenario-templates/templates/from-scenario Create Template From Scenario #

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-templates-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-templates-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Sarj.ai Voice Scenario Templates API
  version: 1.0.0
tags:
- name: scenario-templates
paths:
  /v1/scenario-templates/upload-url:
    post:
      tags:
      - scenario-templates
      summary: Generate Icon Upload Url
      operationId: scenarioTemplatesGenerateIconUploadUrl
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IconUploadRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreSignedUrlResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/scenario-templates/industries:
    get:
      tags:
      - scenario-templates
      summary: List Scenario Industries
      operationId: scenarioTemplatesListScenarioIndustries
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ScenarioIndustry'
                type: array
                title: Response Scenariotemplateslistscenarioindustries
    post:
      tags:
      - scenario-templates
      summary: Create Scenario Industry
      operationId: scenarioTemplatesCreateScenarioIndustry
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateScenarioIndustry'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScenarioIndustry'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/scenario-templates/industries/{industry_id}/templates:
    get:
      tags:
      - scenario-templates
      summary: List Scenario Templates By Industry
      operationId: scenarioTemplatesListScenarioTemplatesByIndustry
      parameters:
      - name: industry_id
        in: path
        required: true
        schema:
          type: string
          title: Industry Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ScenarioTemplateDetails'
                title: Response Scenariotemplateslistscenariotemplatesbyindustry
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/scenario-templates/industries/{industry_id}:
    put:
      tags:
      - scenario-templates
      summary: Update Scenario Industry
      operationId: scenarioTemplatesUpdateScenarioIndustry
      parameters:
      - name: industry_id
        in: path
        required: true
        schema:
          type: string
          title: Industry Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateScenarioIndustryInput'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScenarioIndustry'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - scenario-templates
      summary: Get Scenario Industry
      operationId: scenarioTemplatesGetScenarioIndustry
      parameters:
      - name: industry_id
        in: path
        required: true
        schema:
          type: string
          title: Industry Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScenarioIndustry'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - scenario-templates
      summary: Delete Scenario Industry
      operationId: scenarioTemplatesDeleteScenarioIndustry
      parameters:
      - name: industry_id
        in: path
        required: true
        schema:
          type: string
          title: Industry Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/scenario-templates/templates/{template_id}:
    put:
      tags:
      - scenario-templates
      summary: Update Scenario Template
      operationId: scenarioTemplatesUpdateScenarioTemplate
      parameters:
      - name: template_id
        in: path
        required: true
        schema:
          type: string
          title: Template Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateScenarioTemplateInput'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScenarioTemplate'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - scenario-templates
      summary: Get Scenario Template
      operationId: scenarioTemplatesGetScenarioTemplate
      parameters:
      - name: template_id
        in: path
        required: true
        schema:
          type: string
          title: Template Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScenarioTemplateDetails'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - scenario-templates
      summary: Delete Scenario Template
      operationId: scenarioTemplatesDeleteScenarioTemplate
      parameters:
      - name: template_id
        in: path
        required: true
        schema:
          type: string
          title: Template Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/scenario-templates/templates/from-scenario:
    post:
      tags:
      - scenario-templates
      summary: Create Template From Scenario
      operationId: scenarioTemplatesCreateTemplateFromScenario
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTemplateFromScenarioInput'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScenarioTemplate'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    SupportedIconContentType:
      type: string
      enum:
      - image/png
      - image/jpeg
      - image/svg+xml
      - image/webp
      title: SupportedIconContentType
    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.
    ScenarioTemplate:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        scenario_industry_id:
          type: string
          title: Scenario Industry Id
        icon_path:
          type: string
          title: Icon Path
        icon_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Icon Url
        custom_scenario_id:
          type: string
          title: Custom Scenario Id
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
      type: object
      required:
      - id
      - name
      - scenario_industry_id
      - icon_path
      - custom_scenario_id
      - created_at
      - updated_at
      title: ScenarioTemplate
    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
    ScenarioIndustry:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        icon_path:
          type: string
          title: Icon Path
        icon_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Icon Url
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
      type: object
      required:
      - id
      - name
      - icon_path
      - created_at
      - updated_at
      title: ScenarioIndustry
    PreSignedUrlResponse:
      properties:
        upload_url:
          type: string
          title: Upload Url
        file_key:
          type: string
          title: File Key
      type: object
      required:
      - upload_url
      - file_key
      title: PreSignedUrlResponse
    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
    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
    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."
    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.'
    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
    ScenarioTemplateDetails:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        scenario_industry_id:
          type: string
          title: Scenario Industry Id
        icon_path:
          type: string
          title: Icon Path
        icon_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Icon Url
        custom_scenario_id:
          type: string
          title: Custom Scenario Id
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
        config:
          $ref: '#/components/schemas/CustomScenarioConfig'
      type: object
      required:
      - id
      - name
      - scenario_industry_id
      - icon_path
      - custom_scenario_id
      - created_at
      - updated_at
      - config
      title: ScenarioTemplateDetails
    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]]
    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 voicemail or answering machine and responds appropriately.


        WHEN TO USE: Include in outbound call scenarios where the agent may reach voicemail.

        BEST PRACTICES:

        - Set hangup_when_voicemail_detected to true to end the call immediately on detection

        - Use message_before_hangup with a MultiLingualMessage for a fixed recorded message

        - Use message_before_hangup with an LLMInstruction to let the agent generate the message'
    UpdateScenarioIndustryInput:
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        icon_path:
          anyOf:
          - type: string
          - type: 'null'
          title: Icon Path
      type: object
      title: UpdateScenarioIndustryInput
    KbRetrievalMode:
      type: string
      enum:
      - inline
      - llm_tool
      title: KbRetrievalMode
    ScenarioVariable:
      properties:
        source:
          type: string
          const: scenario_variable
          title: Source
        variable_id:
          type: string
          minLength: 1
          title: Variable Id
      type: object
      required:
      - source
      - variable_id
      title: ScenarioVariable
    DataExtractionEnabled:
      properties:
        type:
          type: string
          const: enabled
          title: Type
          default: enabled
        json_schema:
          additionalProperties: true
          type: object
          title: Json Schema
          description: JSON Schema defining what data to extract. Must be a valid JSON Schema with type, properties, and required fields.
          examples:
          - description: Data collected from customer feedback call
            properties:
              satisfaction_rating:
                description: Customer satisfaction from 1-5
                maximum: 5
                minimum: 1
      

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