openapi: 3.1.0
info:
  title: API Endpoints
  version: 1.0.0
paths:
  /api/v1/bots/create_bot:
    post:
      operationId: createBot
      summary: Create Bot
      description: >-
        This endpoint supports 20 different payload variations. Use the dropdown above the code panel to explore
        configurations for various use cases.
      tags:
        - bots
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBotRequest'
  /api/v1/calendar/scheduled_bots/{bot_id}:
    patch:
      operationId: rescheduleBot
      summary: Reschedule Bot
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RescheduleBotResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RescheduleBotRequest'
    delete:
      operationId: deleteScheduledBot
      summary: Delete Scheduled Bot
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteScheduledBotResponse'
  /api/v1/bots/{bot_id}/status:
    get:
      operationId: getBotStatus
      summary: Get Bot Status
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotStatusResponse'
  /api/v1/bots/{bot_id}/detail:
    get:
      operationId: getBotDetails
      summary: Get Bot Details
      description: Participants activity can be fetched from the link in the response payload.
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotDetailsResponse'
  /api/v1/bots/{bot_id}/summary:
    get:
      operationId: getBotSummary
      summary: Get Bot Summary
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotDetailsResponse'
  /api/v1/bots/{bot_id}/get_audio:
    get:
      operationId: getBotAudio
      summary: Get Bot Audio
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotAudioResponse'
  /api/v1/bots/{bot_id}/get_video:
    get:
      operationId: getBotVideo
      summary: Get Bot Video
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotVideoResponse'
  /api/v1/bots/{bot_id}/get_recording_streams:
    get:
      operationId: getRecordingStreams
      summary: Get Recording Streams
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotVideoResponse'
  /api/v1/bots/{bot_id}/get_audio_streams:
    get:
      operationId: getAudioStreams
      summary: Get Audio Streams
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotVideoResponse'
  /api/v1/bots/{bot_id}/remove_bot:
    get:
      operationId: removeBot
      summary: Remove Bot
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoveBotResponse'
  /api/v1/bots/{bot_id}/pause_recording:
    post:
      operationId: pauseBotRecording
      summary: Pause Bot Recording
      description: |
        Temporarily pauses capture for a bot that is currently recording in a Google Meet meeting.
        The bot remains in the meeting, but recorded and streamed video becomes black, audio becomes
        silent, and real-time transcription stops producing words. The recording timeline is preserved.

        This operation is idempotent. Pausing an already-paused bot is accepted and has no additional effect.
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          description: The ID returned when the bot was created.
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The pause command was accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PauseRecordingResponse'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                description: Any type
        '403':
          description: The bot does not belong to your account.
          content:
            application/json:
              schema:
                description: Any type
        '404':
          description: Bot not found.
          content:
            application/json:
              schema:
                description: Any type
        '409':
          description: The bot is not currently in the meeting.
          content:
            application/json:
              schema:
                description: Any type
        '429':
          description: Rate limit exceeded. This endpoint allows 30 requests per minute per bot.
          content:
            application/json:
              schema:
                description: Any type
        '503':
          description: The bot is not currently recording or is unreachable.
          content:
            application/json:
              schema:
                description: Any type
  /api/v1/bots/{bot_id}/resume_recording:
    post:
      operationId: resumeBotRecording
      summary: Resume Bot Recording
      description: |
        Resumes normal video, audio, stream, and real-time transcription capture for a paused bot
        in a Google Meet meeting. The recording continues on the original timeline.

        This operation is idempotent. Resuming a bot that is already recording is accepted and has
        no additional effect.
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          description: The ID returned when the bot was created.
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The resume command was accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResumeRecordingResponse'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                description: Any type
        '403':
          description: The bot does not belong to your account.
          content:
            application/json:
              schema:
                description: Any type
        '404':
          description: Bot not found.
          content:
            application/json:
              schema:
                description: Any type
        '409':
          description: The bot is not currently in the meeting.
          content:
            application/json:
              schema:
                description: Any type
        '429':
          description: Rate limit exceeded. This endpoint allows 30 requests per minute per bot.
          content:
            application/json:
              schema:
                description: Any type
        '503':
          description: The bot is not currently recording or is unreachable.
          content:
            application/json:
              schema:
                description: Any type
  /api/v1/bots/{bot_id}/get_speaker_timeline:
    get:
      operationId: getSpeakerTimeline
      summary: Get Speaker Timeline
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SpeakerTimelineResponse'
  /api/v1/bots/{bot_id}/get_chats:
    get:
      operationId: getBotChats
      summary: Get Bot Chats
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotChatsResponse'
  /api/v1/bots/{bot_id}/get_screenshots:
    get:
      operationId: getBotScreenshots
      summary: Get Bot Screenshots
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotScreenshotsResponse'
  /api/v1/bots/{bot_id}/get_participants:
    get:
      operationId: fetchParticipants
      summary: Fetch Participants
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchParticipantsResponse'
  /api/v1/bots/{bot_id}/delete:
    delete:
      operationId: deleteBotData
      summary: Delete Data
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteDataResponse'
  /api/v1/bots:
    get:
      operationId: listBots
      summary: List Bots
      tags:
        - bots
      parameters:
        - name: status
          in: query
          description: Filter bots by status.
          required: false
          schema:
            type: string
        - name: from
          in: query
          description: Start date for the results, in YYYY-MM-DD format.
          required: false
          schema:
            type: string
            format: date
        - name: to
          in: query
          description: End date for the results, in YYYY-MM-DD format.
          required: false
          schema:
            type: string
            format: date
        - name: platform
          in: query
          description: Filter bots by meeting platform. Select one of the supported values; capitalization matters.
          required: false
          schema:
            $ref: '#/components/schemas/ApiV1BotsGetParametersPlatform'
        - name: custom_attr[tag]
          in: query
          description: Filter by the custom attribute named `tag`. Custom attribute filters are combined with AND.
          required: false
          schema:
            type: string
        - name: custom_attr[sample]
          in: query
          description: Filter by the custom attribute named `sample`. Custom attribute filters are combined with AND.
          required: false
          schema:
            type: string
        - name: custom_attr[count]
          in: query
          description: >-
            Filter by the numeric custom attribute named `count`. The value is parsed as JSON and combined with other
            custom attribute filters using AND.
          required: false
          schema:
            type: number
            format: double
        - name: custom_attr[enabled]
          in: query
          description: >-
            Filter by the boolean custom attribute named `enabled`. The value is parsed as JSON and combined with other
            custom attribute filters using AND.
          required: false
          schema:
            type: boolean
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListBotsResponse'
  /api/v1/bots/{bot_id}/send_message:
    post:
      operationId: sendMessage
      summary: Send Message
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendMessageResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendMessageRequest'
  /api/v1/bots/{bot_id}/send_image:
    post:
      operationId: sendImage
      summary: Send Image
      tags:
        - bots
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendImageResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendImageRequest'
  /api/v1/transcript/{transcript_id}/get_transcript:
    get:
      operationId: getTranscription
      summary: Get Transcription
      tags:
        - transcription
      parameters:
        - name: transcript_id
          in: path
          required: true
          schema:
            type: string
        - name: raw
          in: query
          description: Set to true to retrieve the raw unformatted transcript from the provider.
          required: false
          schema:
            type: boolean
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transcription_getTranscription_Response_200'
  /api/v1/bots/{bot_id}/transcribe:
    post:
      operationId: transcribeBotAudio
      summary: Transcribe
      tags:
        - transcription
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranscribeResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TranscribeRequest'
  /api/v1/bots/{bot_id}/transcriptions:
    get:
      operationId: getBotTranscriptions
      summary: Transcriptions
      tags:
        - transcription
      parameters:
        - name: bot_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BotTranscriptionsResponse'
  /api/v1/calendar/create_calendar:
    post:
      operationId: createCalendar
      summary: Create Calendar
      tags:
        - calendar
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCalendarResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalendarCreateRequest'
  /api/v1/calendar/disconnect:
    post:
      operationId: disconnectCalendar
      summary: Disconnect Calendar
      tags:
        - calendar
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Calendar_disconnectCalendar_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalendarCreateRequest'
  /api/v1/calendar:
    get:
      operationId: getCalendars
      summary: Get Calendars
      tags:
        - calendar
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCalendarsResponse'
  /api/v1/calendar/schedule/{event_id}:
    post:
      operationId: scheduleEvent
      summary: Schedule Event
      tags:
        - calendar
      parameters:
        - name: event_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleEventResponse'
    delete:
      operationId: removeScheduleEvent
      summary: Remove Schedule Event
      tags:
        - calendar
      parameters:
        - name: event_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Calendar_removeScheduleEvent_Response_200'
  /api/v1/calendar/events:
    get:
      operationId: fetchSyncEvents
      summary: Fetch/Sync Events
      tags:
        - calendar
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchEventsResponse'
  /api/v1/calendar/toggle-recurrence:
    post:
      operationId: toggleRecurringEvent
      summary: Toggle Recurring Event
      tags:
        - calendar
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Calendar_toggleRecurringEvent_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ToggleRecurringEventRequest'
  /api/v1/calendar/auto-schedule/enable:
    post:
      operationId: setupCron
      summary: Setup Cron
      tags:
        - calendar
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetupCronResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetupCronRequest'
  /api/v1/calendar/auto-schedule/disable:
    post:
      operationId: disableCron
      summary: Disable Cron
      tags:
        - calendar
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Calendar_disableCron_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetupCronRequest'
  /api/v1/google-login-domains:
    post:
      operationId: createGoogleDomain
      summary: Create Google Domain
      tags:
        - googleLogin
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateGoogleDomainResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginGroupRequest'
    get:
      operationId: listGoogleDomains
      summary: List Google Domains
      tags:
        - googleLogin
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListGoogleDomainsResponse'
  /api/v1/google-login-domains/{domain}:
    get:
      operationId: getGoogleDomain
      summary: Get Google Domain
      tags:
        - googleLogin
      parameters:
        - name: domain
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetGoogleDomainResponse'
    patch:
      operationId: updateGoogleDomain
      summary: Update Google Domain
      tags:
        - googleLogin
      parameters:
        - name: domain
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateGoogleDomainResponse'
    delete:
      operationId: deleteGoogleDomain
      summary: Delete Google Domain
      tags:
        - googleLogin
      parameters:
        - name: domain
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Google Login_deleteGoogleDomain_Response_200'
  /api/v1/google-logins:
    post:
      operationId: createGoogleLogin
      summary: Create Google Login
      tags:
        - googleLogin
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateGoogleLoginResponse'
    get:
      operationId: listGoogleLogins
      summary: List Google Logins
      tags:
        - googleLogin
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListGoogleLoginsResponse'
  /api/v1/google-logins/{login_id}:
    patch:
      operationId: updateGoogleLogin
      summary: Update Google Login
      tags:
        - googleLogin
      parameters:
        - name: login_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateGoogleLoginResponse'
    delete:
      operationId: deleteGoogleLogin
      summary: Delete Google Login
      tags:
        - googleLogin
      parameters:
        - name: login_id
          in: path
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteGoogleLoginResponse'
  /api/v1/mia:
    post:
      operationId: createAgentConfig
      summary: Create Agent Config
      description: >-
        For more information on customizing the payload, please refer to [MIA
        Configurations](https://docs.meetstream.ai/guides/mia-meetstream-infrastructure-agents/mia-configurations) in
        our guides.
      tags:
        - mia
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MIACreateConfigResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MIACreateConfigRequest'
    put:
      operationId: updateAgentConfig
      summary: Update Agent Config
      tags:
        - mia
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MIAUpdateConfigResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MIAUpdateConfigRequest'
    get:
      operationId: getAgentConfigs
      summary: Get Agent Configs
      tags:
        - mia
      parameters:
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MIAGetConfigsResponse'
    delete:
      operationId: deleteAgentConfig
      summary: Delete Agent Config
      tags:
        - mia
      parameters:
        - name: agent_config_id
          in: query
          description: The ID of the agent configuration to delete.
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: 'Format: Token <your_api_key>'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MIADeleteConfigResponse'
servers:
  - url: https://api.meetstream.ai
    description: Meetstream API v1
components:
  schemas:
    CreateBotRequestZoom:
      type: object
      properties:
        use_zoom_obf:
          type: boolean
          description: Enable Zoom OBF (On-Behalf-Of) feature.
      description: Zoom-specific configuration options.
      title: CreateBotRequestZoom
    CreateBotRequestSocketConnectionUrl:
      type: object
      properties:
        websocket_url:
          type: string
      description: WebSocket URL for two-way audio/data bridge connection.
      title: CreateBotRequestSocketConnectionUrl
    CreateBotRequestLiveAudioRequired:
      type: object
      properties:
        websocket_url:
          type: string
      description: WebSocket URL to stream live audio output from the meeting.
      title: CreateBotRequestLiveAudioRequired
    CreateBotRequestLiveVideoRequired:
      type: object
      properties:
        websocket_url:
          type: string
      description: WebSocket URL to stream live video output from the meeting.
      title: CreateBotRequestLiveVideoRequired
    CreateBotRequestLiveTranscriptionRequired:
      type: object
      properties:
        webhook_url:
          type: string
      description: Webhook URL to receive live transcription events.
      title: CreateBotRequestLiveTranscriptionRequired
    AutomaticLeaveConfig:
      type: object
      properties:
        waiting_room_timeout:
          type: integer
          description: |-
            Seconds to wait in a waiting room before leaving.
            (Default Value: 600 seconds / 10 min)
        everyone_left_timeout:
          type: integer
          description: 'Seconds to stay in the call after everyone else leaves. (Default Value: 300 seconds / 5 minutes)'
        voice_inactivity_timeout:
          type: integer
          description: 'Seconds to wait if no audio is detected. (Default Value: 100 seconds / 1 minute and 40 seconds)'
        in_call_recording_timeout:
          type: integer
          description: 'Maximum seconds to stay in call while recording. (Default Value: 14400 seconds / 4 hours)'
        recording_permission_denied_timeout:
          type: integer
          description: >-
            Seconds to wait if recording permission is denied. This is specific to Zoom only. (Default Value: 60 seconds
            / 1 minute).
      description: >-
        Configure how long the bot should remain in the meeting under different conditions before leaving automatically.
        All timeout values are specified in seconds and accept integer values only.
      title: AutomaticLeaveConfig
    RecordingConfigRetentionType:
      type: string
      enum:
        - timed
      default: timed
      title: RecordingConfigRetentionType
    RecordingConfigRetention:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/RecordingConfigRetentionType'
          default: timed
        hours:
          type: integer
          default: 24
      title: RecordingConfigRetention
    RecordingConfigTranscriptProviderDeepgramModel:
      type: string
      enum:
        - nova-3
      default: nova-3
      title: RecordingConfigTranscriptProviderDeepgramModel
    RecordingConfigTranscriptProviderDeepgram:
      type: object
      properties:
        model:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderDeepgramModel'
        language:
          type: string
          default: en
        punctuate:
          type: boolean
          default: true
        smart_format:
          type: boolean
          default: true
        diarize:
          type: boolean
          default: true
        paragraphs:
          type: boolean
          default: true
        numerals:
          type: boolean
          default: true
        filler_words:
          type: boolean
          default: false
        utterances:
          type: boolean
          default: true
        utt_split:
          type: number
          format: double
          default: 0.8
        detect_language:
          type: boolean
          default: false
        keywords:
          type: array
          items:
            type: string
        search:
          type: array
          items:
            type: string
        tag:
          type: array
          items:
            type: string
      required:
        - model
        - language
        - punctuate
        - smart_format
        - diarize
        - paragraphs
        - numerals
        - filler_words
        - utterances
        - utt_split
        - detect_language
      title: RecordingConfigTranscriptProviderDeepgram
    RecordingConfigTranscriptProviderAssemblyaiSpeechModelsItems:
      type: string
      enum:
        - universal-2
      title: RecordingConfigTranscriptProviderAssemblyaiSpeechModelsItems
    RecordingConfigTranscriptProviderAssemblyai:
      type: object
      properties:
        speech_models:
          type: array
          items:
            $ref: '#/components/schemas/RecordingConfigTranscriptProviderAssemblyaiSpeechModelsItems'
        language_code:
          type: string
          default: en_us
        speaker_labels:
          type: boolean
          default: true
        punctuate:
          type: boolean
          default: true
        format_text:
          type: boolean
          default: true
        filter_profanity:
          type: boolean
          default: false
        redact_pii:
          type: boolean
          default: false
        auto_chapters:
          type: boolean
          default: false
        entity_detection:
          type: boolean
          default: false
        keyterms_prompt:
          type: array
          items:
            type: string
      required:
        - speech_models
        - language_code
        - speaker_labels
        - punctuate
        - format_text
        - filter_profanity
        - redact_pii
        - auto_chapters
        - entity_detection
      title: RecordingConfigTranscriptProviderAssemblyai
    RecordingConfigTranscriptProviderJigsawstack:
      type: object
      properties:
        language:
          type: string
          default: auto
        translate:
          type: boolean
          default: false
        by_speaker:
          type: boolean
          default: true
      required:
        - language
        - translate
      title: RecordingConfigTranscriptProviderJigsawstack
    RecordingConfigTranscriptProviderSarvamModel:
      type: string
      enum:
        - saaras:v3
      default: saaras:v3
      title: RecordingConfigTranscriptProviderSarvamModel
    RecordingConfigTranscriptProviderSarvamMode:
      type: string
      enum:
        - transcribe
        - translate
      default: transcribe
      title: RecordingConfigTranscriptProviderSarvamMode
    RecordingConfigTranscriptProviderSarvam:
      type: object
      properties:
        model:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderSarvamModel'
        language_code:
          type: string
          default: en-IN
        mode:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderSarvamMode'
        with_diarization:
          type: boolean
          default: true
      required:
        - model
        - language_code
        - mode
        - with_diarization
      title: RecordingConfigTranscriptProviderSarvam
    RecordingConfigTranscriptProviderMeetingCaptions:
      type: object
      properties: {}
      description: Uses the meeting platform's native captions. No additional config required.
      title: RecordingConfigTranscriptProviderMeetingCaptions
    RecordingConfigTranscriptProviderMeetstream:
      type: object
      properties:
        language:
          type: string
          default: auto
        translate:
          type: boolean
          default: false
      required:
        - language
        - translate
      title: RecordingConfigTranscriptProviderMeetstream
    RecordingConfigTranscriptProviderAssemblyaiStreamingSpeechModel:
      type: string
      enum:
        - universal-streaming-english
      default: universal-streaming-english
      title: RecordingConfigTranscriptProviderAssemblyaiStreamingSpeechModel
    RecordingConfigTranscriptProviderAssemblyaiStreamingTranscriptionMode:
      type: string
      enum:
        - raw
        - sentence
      default: raw
      title: RecordingConfigTranscriptProviderAssemblyaiStreamingTranscriptionMode
    RecordingConfigTranscriptProviderAssemblyaiStreamingEncoding:
      type: string
      enum:
        - pcm_s16le
      default: pcm_s16le
      title: RecordingConfigTranscriptProviderAssemblyaiStreamingEncoding
    RecordingConfigTranscriptProviderAssemblyaiStreaming:
      type: object
      properties:
        speech_model:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderAssemblyaiStreamingSpeechModel'
        transcription_mode:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderAssemblyaiStreamingTranscriptionMode'
        sample_rate:
          type: integer
          default: 48000
        format_turns:
          type: boolean
          default: false
        encoding:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderAssemblyaiStreamingEncoding'
        vad_threshold:
          type: string
          default: '0.4'
        end_of_turn_confidence_threshold:
          type: string
          default: '0.4'
        inactivity_timeout:
          type: integer
          default: 300
        min_end_of_turn_silence_when_confident:
          type: string
          default: '400'
        max_turn_silence:
          type: string
          default: '1280'
      required:
        - speech_model
        - transcription_mode
        - sample_rate
        - format_turns
        - encoding
        - vad_threshold
        - end_of_turn_confidence_threshold
        - inactivity_timeout
        - min_end_of_turn_silence_when_confident
        - max_turn_silence
      title: RecordingConfigTranscriptProviderAssemblyaiStreaming
    RecordingConfigTranscriptProviderDeepgramStreamingModel:
      type: string
      enum:
        - nova-2
      default: nova-2
      title: RecordingConfigTranscriptProviderDeepgramStreamingModel
    RecordingConfigTranscriptProviderDeepgramStreamingTranscriptionMode:
      type: string
      enum:
        - sentence
        - word
        - raw
      default: sentence
      title: RecordingConfigTranscriptProviderDeepgramStreamingTranscriptionMode
    RecordingConfigTranscriptProviderDeepgramStreamingEncoding:
      type: string
      enum:
        - linear16
      default: linear16
      title: RecordingConfigTranscriptProviderDeepgramStreamingEncoding
    RecordingConfigTranscriptProviderDeepgramStreaming:
      type: object
      properties:
        model:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderDeepgramStreamingModel'
        transcription_mode:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderDeepgramStreamingTranscriptionMode'
        language:
          type: string
          default: en
        punctuate:
          type: boolean
          default: true
        smart_format:
          type: boolean
          default: true
        endpointing:
          type: integer
          default: 300
        vad_events:
          type: boolean
          default: true
        utterance_end_ms:
          type: integer
          default: 1000
        encoding:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderDeepgramStreamingEncoding'
        channels:
          type: integer
          default: 1
      required:
        - model
        - transcription_mode
        - language
        - punctuate
        - smart_format
        - endpointing
        - vad_events
        - utterance_end_ms
        - encoding
        - channels
      title: RecordingConfigTranscriptProviderDeepgramStreaming
    RecordingConfigTranscriptProvider:
      type: object
      properties:
        deepgram:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderDeepgram'
        assemblyai:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderAssemblyai'
        jigsawstack:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderJigsawstack'
        sarvam:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderSarvam'
        meeting_captions:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderMeetingCaptions'
          description: Uses the meeting platform's native captions. No additional config required.
        meetstream:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderMeetstream'
        assemblyai_streaming:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderAssemblyaiStreaming'
        deepgram_streaming:
          $ref: '#/components/schemas/RecordingConfigTranscriptProviderDeepgramStreaming'
      description: Transcription provider config. Use one provider key per request.
      title: RecordingConfigTranscriptProvider
    RecordingConfigTranscript:
      type: object
      properties:
        provider:
          $ref: '#/components/schemas/RecordingConfigTranscriptProvider'
          description: Transcription provider config. Use one provider key per request.
      required:
        - provider
      title: RecordingConfigTranscript
    RecordingConfigRealtimeEndpointsItems:
      type: object
      properties:
        type:
          type: string
        url:
          type: string
        events:
          type: array
          items:
            type: string
      title: RecordingConfigRealtimeEndpointsItems
    RecordingConfig:
      type: object
      properties:
        retention:
          $ref: '#/components/schemas/RecordingConfigRetention'
        transcript:
          $ref: '#/components/schemas/RecordingConfigTranscript'
        realtime_endpoints:
          type: array
          items:
            $ref: '#/components/schemas/RecordingConfigRealtimeEndpointsItems'
      description: >-
        Bot media is retained indefinitely by default. Additional charges apply based on your storage usage and
        retention at $0.20/GB.
      title: RecordingConfig
    CreateBotRequest:
      type: object
      properties:
        meeting_link:
          type: string
          description: The URL of the Google Meet, Zoom, or Teams meeting.
        bot_name:
          type: string
          description: The display name the bot will use in the meeting.
        video_required:
          type: boolean
          default: true
          description: Whether the bot should record video.
        zoom:
          $ref: '#/components/schemas/CreateBotRequestZoom'
          description: Zoom-specific configuration options.
        audio_separate_streams:
          type: boolean
          description: Enable separate audio streams feature.
        video_separate_streams:
          type: boolean
          description: Enable separate video streams feature.
        bot_message:
          type: string
          description: An initial message for the bot to post in the meeting chat.
        bot_image_url:
          type: string
          description: URL for the bot's profile picture or avatar.
        callback_url:
          type: string
          description: A URL to receive webhook event callbacks.
        join_at:
          type: string
          format: date-time
          description: ISO 8601 datetime to schedule the bot to join the meeting.
        agent_config_id:
          type: string
          description: The ID of the agent configuration to enable agentic features.
        custom_attributes:
          type: object
          additionalProperties:
            description: Any type
          description: Arbitrary key-value metadata attached to the bot.
        socket_connection_url:
          $ref: '#/components/schemas/CreateBotRequestSocketConnectionUrl'
          description: WebSocket URL for two-way audio/data bridge connection.
        live_audio_required:
          $ref: '#/components/schemas/CreateBotRequestLiveAudioRequired'
          description: WebSocket URL to stream live audio output from the meeting.
        live_video_required:
          $ref: '#/components/schemas/CreateBotRequestLiveVideoRequired'
          description: WebSocket URL to stream live video output from the meeting.
        workflow_config_ids:
          type: array
          items:
            type: string
          description: List of workflow configuration IDs to trigger post-meeting.
        live_transcription_required:
          $ref: '#/components/schemas/CreateBotRequestLiveTranscriptionRequired'
          description: Webhook URL to receive live transcription events.
        automatic_leave:
          $ref: '#/components/schemas/AutomaticLeaveConfig'
        recording_config:
          $ref: '#/components/schemas/RecordingConfig'
      required:
        - meeting_link
        - bot_name
      title: CreateBotRequest
    BotResponse:
      type: object
      properties:
        bot_id:
          type: string
        transcript_id:
          type:
            - string
            - 'null'
        meeting_url:
          type: string
        status:
          type: string
      title: BotResponse
    RescheduleBotRequest:
      type: object
      properties:
        scheduled_join_time:
          type: string
          format: date-time
      required:
        - scheduled_join_time
      title: RescheduleBotRequest
    RescheduleBotResponse:
      type: object
      properties:
        message:
          type: string
        bot_id:
          type: string
        updated_fields:
          type: array
          items:
            type: string
        schedule_updated:
          type: boolean
      title: RescheduleBotResponse
    DeleteScheduledBotResponse:
      type: object
      properties:
        message:
          type: string
        bot_id:
          type: string
      title: DeleteScheduledBotResponse
    BotStatusResponse:
      type: object
      properties:
        bot_id:
          type: string
        status:
          type: string
        custom_attributes:
          type: object
          additionalProperties:
            description: Any type
      title: BotStatusResponse
    BotDetailsResponseBotDetailsCaptionFile:
      type: object
      properties:
        available:
          type: boolean
      title: BotDetailsResponseBotDetailsCaptionFile
    BotDetailsResponseBotDetails:
      type: object
      properties:
        BotID:
          type: string
        BotImageURL:
          type:
            - string
            - 'null'
        BotMessage:
          type: string
        BotProfile:
          type: string
        BotUsername:
          type: string
        CreatedAt:
          type: string
        Duration:
          type: integer
        EndTime:
          type: string
        LastUpdatedAt:
          type: integer
        ManifestStatus:
          type: string
        MeetingLink:
          type: string
        NativeSTT:
          type: boolean
        OfferingType:
          type: string
        Platform:
          type: string
        StartTime:
          type: string
        Status:
          type: string
        UserID:
          type: string
        RequestPayload:
          type: object
          additionalProperties:
            description: Any type
        StatusTimeline:
          type: object
          additionalProperties:
            description: Any type
        custom_attributes:
          type: object
          additionalProperties:
            description: Any type
        caption_file:
          $ref: '#/components/schemas/BotDetailsResponseBotDetailsCaptionFile'
      title: BotDetailsResponseBotDetails
    BotDetailsResponse:
      type: object
      properties:
        bot_details:
          $ref: '#/components/schemas/BotDetailsResponseBotDetails'
      title: BotDetailsResponse
    BotAudioResponse:
      type: object
      properties:
        audio_url:
          type: string
          description: A pre-signed S3 URL to download the bot's recorded audio. Valid for 1 hour.
      title: BotAudioResponse
    BotVideoResponseVideoInfo:
      type: object
      properties:
        duration:
          type:
            - integer
            - 'null'
        size_mb:
          type:
            - number
            - 'null'
          format: double
        resolution:
          type: string
        fps:
          type:
            - integer
            - 'null'
        frames_processed:
          type:
            - integer
            - 'null'
        corrupted_frames:
          type: integer
      title: BotVideoResponseVideoInfo
    BotVideoResponse:
      type: object
      properties:
        video_url:
          type: string
          description: A pre-signed S3 URL to download the bot's recorded video. Valid for 10 minutes.
        video_info:
          $ref: '#/components/schemas/BotVideoResponseVideoInfo'
      title: BotVideoResponse
    RemoveBotResponse:
      type: object
      properties:
        message:
          type: string
      title: RemoveBotResponse
    PauseRecordingResponseStatus:
      type: string
      enum:
        - accepted
      description: Indicates that the pause command was accepted.
      title: PauseRecordingResponseStatus
    PauseRecordingResponseCommand:
      type: string
      enum:
        - pause_recording
      description: The recording command that was accepted.
      title: PauseRecordingResponseCommand
    PauseRecordingResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/PauseRecordingResponseStatus'
          description: Indicates that the pause command was accepted.
        bot_id:
          type: string
          description: The ID of the bot receiving the command.
        command:
          $ref: '#/components/schemas/PauseRecordingResponseCommand'
          description: The recording command that was accepted.
      required:
        - status
        - bot_id
        - command
      title: PauseRecordingResponse
    ResumeRecordingResponseStatus:
      type: string
      enum:
        - accepted
      description: Indicates that the resume command was accepted.
      title: ResumeRecordingResponseStatus
    ResumeRecordingResponseCommand:
      type: string
      enum:
        - resume_recording
      description: The recording command that was accepted.
      title: ResumeRecordingResponseCommand
    ResumeRecordingResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ResumeRecordingResponseStatus'
          description: Indicates that the resume command was accepted.
        bot_id:
          type: string
          description: The ID of the bot receiving the command.
        command:
          $ref: '#/components/schemas/ResumeRecordingResponseCommand'
          description: The recording command that was accepted.
      required:
        - status
        - bot_id
        - command
      title: ResumeRecordingResponse
    SpeakerTimelineResponseChunksItems:
      type: object
      properties:
        chunkIndex:
          type: integer
        timestamp:
          type: string
        sampleRate:
          type: integer
        speakerId:
          type: string
        speakerName:
          type: string
        startByte:
          type: integer
        endByte:
          type: integer
      title: SpeakerTimelineResponseChunksItems
    SpeakerTimelineResponse:
      type: object
      properties:
        chunks:
          type: array
          items:
            $ref: '#/components/schemas/SpeakerTimelineResponseChunksItems'
        lastUpdated:
          type: string
        audioFilePath:
          type: string
        totalFileSize:
          type: integer
      title: SpeakerTimelineResponse
    BotChatsResponseMetadata:
      type: object
      properties:
        sessionId:
          type: integer
        startTime:
          type: string
        lastUpdated:
          type: string
        totalMessages:
          type: integer
        uniqueSpeakers:
          type: integer
        botId:
          type: string
        meetingId:
          type: string
      title: BotChatsResponseMetadata
    BotChatsResponseSpeakersItems:
      type: object
      properties:
        deviceId:
          type: string
        name:
          type: string
        displayName:
          type: string
        messageCount:
          type: integer
      title: BotChatsResponseSpeakersItems
    BotChatsResponseChatMessagesItems:
      type: object
      properties:
        messageId:
          type: string
        deviceId:
          type: string
        timestamp:
          type: string
        text:
          type: string
        speakerName:
          type: string
        speakerDisplayName:
          type: string
        clientTimestamp:
          type: string
        sessionTimestamp:
          type: integer
      title: BotChatsResponseChatMessagesItems
    BotChatsResponseServerMetadata:
      type: object
      properties:
        savedAt:
          type: string
        serverBotId:
          type: string
        serverMeetingId:
          type: string
        serverVersion:
          type: string
      title: BotChatsResponseServerMetadata
    BotChatsResponse:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/BotChatsResponseMetadata'
        speakers:
          type: array
          items:
            $ref: '#/components/schemas/BotChatsResponseSpeakersItems'
        chatMessages:
          type: array
          items:
            $ref: '#/components/schemas/BotChatsResponseChatMessagesItems'
        messagesBySpeaker:
          type: object
          additionalProperties:
            description: Any type
        serverMetadata:
          $ref: '#/components/schemas/BotChatsResponseServerMetadata'
      title: BotChatsResponse
    BotScreenshotsResponseScreenshotsItems:
      type: object
      properties: {}
      title: BotScreenshotsResponseScreenshotsItems
    BotScreenshotsResponse:
      type: object
      properties:
        bot_id:
          type: string
        screenshots_count:
          type: integer
        screenshots:
          type: array
          items:
            $ref: '#/components/schemas/BotScreenshotsResponseScreenshotsItems'
      title: BotScreenshotsResponse
    FetchParticipantsResponseItems:
      type: object
      properties:
        deviceId:
          type: string
        displayName:
          type: string
        fullName:
          type: string
        profilePicture:
          type: string
        status:
          type: integer
        humanized_status:
          type: string
        streamIds:
          type: array
          items:
            type: string
        lastUpdated:
          type: string
        parentDeviceId:
          type: string
          description: Present only for secondary devices.
      title: FetchParticipantsResponseItems
    FetchParticipantsResponse:
      type: array
      items:
        $ref: '#/components/schemas/FetchParticipantsResponseItems'
      title: FetchParticipantsResponse
    DeleteDataResponse:
      type: object
      properties:
        message:
          type: string
        bot_id:
          type: string
        deleted_objects:
          type: integer
      title: DeleteDataResponse
    ApiV1BotsGetParametersPlatform:
      type: string
      enum:
        - GMeet
        - Zoom
        - Teams
      title: ApiV1BotsGetParametersPlatform
    ListBotsResponse:
      type: object
      properties:
        bots:
          type: array
          items:
            type: object
            additionalProperties:
              description: Any type
        hasNextPage:
          type: boolean
        nextCursor:
          type:
            - string
            - 'null'
      title: ListBotsResponse
    SendMessageRequestMetadata:
      type: object
      properties:
        message_type:
          type: string
      title: SendMessageRequestMetadata
    SendMessageRequest:
      type: object
      properties:
        message:
          type: string
        metadata:
          $ref: '#/components/schemas/SendMessageRequestMetadata'
      required:
        - message
      title: SendMessageRequest
    SendMessageResponse:
      type: object
      properties:
        status:
          type: string
        bot_id:
          type: string
        command:
          type: string
      title: SendMessageResponse
    SendImageRequestMetadata:
      type: object
      properties:
        message_type:
          type: string
      title: SendImageRequestMetadata
    SendImageRequest:
      type: object
      properties:
        img_url:
          type: string
        display_duration:
          type: integer
        metadata:
          $ref: '#/components/schemas/SendImageRequestMetadata'
      required:
        - img_url
      title: SendImageRequest
    SendImageResponse:
      type: object
      properties:
        status:
          type: string
        bot_id:
          type: string
        command:
          type: string
      title: SendImageResponse
    GetTranscriptionSchemaItemsWordsItems:
      type: object
      properties:
        word:
          type: string
        punctuated_word:
          type: string
        start:
          type: number
          format: double
        end:
          type: number
          format: double
        confidence:
          type: number
          format: double
        speaker:
          type: integer
        speaker_confidence:
          type: number
          format: double
      title: GetTranscriptionSchemaItemsWordsItems
    GetTranscriptionSchemaItems:
      type: object
      properties:
        speaker:
          type: string
        transcript:
          type: string
        start_time:
          type: number
          format: double
        end_time:
          type: number
          format: double
        absolute_start_time:
          type: string
        absolute_end_time:
          type: string
        words:
          type: array
          items:
            $ref: '#/components/schemas/GetTranscriptionSchemaItemsWordsItems'
      title: GetTranscriptionSchemaItems
    GetTranscriptionSchema:
      type: array
      items:
        $ref: '#/components/schemas/GetTranscriptionSchemaItems'
      title: GetTranscriptionSchema
    GetRawTranscriptionSchemaWordsItems:
      type: object
      properties:
        text:
          type: string
        start:
          type: integer
        end:
          type: integer
        confidence:
          type: number
          format: double
        speaker:
          type: string
      title: GetRawTranscriptionSchemaWordsItems
    GetRawTranscriptionSchema:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        text:
          type: string
        language_code:
          type: string
        audio_url:
          type: string
        confidence:
          type: number
          format: double
        audio_duration:
          type: integer
        speaker_labels:
          type: boolean
        words:
          type: array
          items:
            $ref: '#/components/schemas/GetRawTranscriptionSchemaWordsItems'
        utterances:
          type: array
          items:
            type: object
            additionalProperties:
              description: Any type
      title: GetRawTranscriptionSchema
    Transcription_getTranscription_Response_200:
      oneOf:
        - $ref: '#/components/schemas/GetTranscriptionSchema'
        - $ref: '#/components/schemas/GetRawTranscriptionSchema'
      title: Transcription_getTranscription_Response_200
    TranscribeRequestProviderDeepgramModel:
      type: string
      enum:
        - nova-3
      title: TranscribeRequestProviderDeepgramModel
    TranscribeRequestProviderDeepgram:
      type: object
      properties:
        model:
          $ref: '#/components/schemas/TranscribeRequestProviderDeepgramModel'
        language:
          type: string
        punctuate:
          type: boolean
        smart_format:
          type: boolean
        diarize:
          type: boolean
        paragraphs:
          type: boolean
        numerals:
          type: boolean
        filler_words:
          type: boolean
        keywords:
          type: array
          items:
            type: string
        utterances:
          type: boolean
        utt_split:
          type: number
          format: double
        detect_language:
          type: boolean
        search:
          type: array
          items:
            type: string
        tag:
          type: array
          items:
            type: string
      title: TranscribeRequestProviderDeepgram
    TranscribeRequestProviderMeetstream:
      type: object
      properties:
        language:
          type: string
        translate:
          type: boolean
      title: TranscribeRequestProviderMeetstream
    TranscribeRequestProviderJigsawstack:
      type: object
      properties:
        language:
          type: string
        translate:
          type: boolean
        by_speaker:
          type: boolean
      title: TranscribeRequestProviderJigsawstack
    TranscribeRequestProviderSarvamModel:
      type: string
      enum:
        - saaras:v3
      title: TranscribeRequestProviderSarvamModel
    TranscribeRequestProviderSarvamMode:
      type: string
      enum:
        - transcribe
        - translate
      title: TranscribeRequestProviderSarvamMode
    TranscribeRequestProviderSarvam:
      type: object
      properties:
        model:
          $ref: '#/components/schemas/TranscribeRequestProviderSarvamModel'
        language_code:
          type: string
        mode:
          $ref: '#/components/schemas/TranscribeRequestProviderSarvamMode'
        with_diarization:
          type: boolean
      title: TranscribeRequestProviderSarvam
    TranscribeRequestProviderAssemblyaiSpeechModelsItems:
      type: string
      enum:
        - universal-2
      title: TranscribeRequestProviderAssemblyaiSpeechModelsItems
    TranscribeRequestProviderAssemblyai:
      type: object
      properties:
        speech_models:
          type: array
          items:
            $ref: '#/components/schemas/TranscribeRequestProviderAssemblyaiSpeechModelsItems'
        language_code:
          type: string
        speaker_labels:
          type: boolean
        punctuate:
          type: boolean
        format_text:
          type: boolean
        filter_profanity:
          type: boolean
        redact_pii:
          type: boolean
        auto_chapters:
          type: boolean
        entity_detection:
          type: boolean
        keyterms_prompt:
          type: array
          items:
            type: string
      title: TranscribeRequestProviderAssemblyai
    TranscribeRequestProvider:
      type: object
      properties:
        deepgram:
          $ref: '#/components/schemas/TranscribeRequestProviderDeepgram'
        meetstream:
          $ref: '#/components/schemas/TranscribeRequestProviderMeetstream'
        jigsawstack:
          $ref: '#/components/schemas/TranscribeRequestProviderJigsawstack'
        sarvam:
          $ref: '#/components/schemas/TranscribeRequestProviderSarvam'
        assemblyai:
          $ref: '#/components/schemas/TranscribeRequestProviderAssemblyai'
      title: TranscribeRequestProvider
    TranscribeRequest:
      type: object
      properties:
        provider:
          $ref: '#/components/schemas/TranscribeRequestProvider'
        callback_url:
          type: string
      required:
        - provider
      title: TranscribeRequest
    TranscribeResponse:
      type: object
      properties:
        bot_id:
          type: string
        transcript_id:
          type: string
        provider:
          type: string
        message:
          type: string
      title: TranscribeResponse
    BotTranscriptionsResponseTranscriptionsItemsStatus:
      type: string
      enum:
        - Success
        - Processing
        - Failed
      title: BotTranscriptionsResponseTranscriptionsItemsStatus
    BotTranscriptionsResponseTranscriptionsItemsDownloadUrls:
      type: object
      properties:
        raw_transcript:
          type: string
          description: Pre-signed S3 URL for the raw transcript. Valid for 1 hour.
        processed_transcript:
          type: string
          description: Pre-signed S3 URL for the processed transcript. Valid for 1 hour.
      title: BotTranscriptionsResponseTranscriptionsItemsDownloadUrls
    BotTranscriptionsResponseTranscriptionsItems:
      type: object
      properties:
        transcript_id:
          type: string
        provider:
          type: string
        status:
          $ref: '#/components/schemas/BotTranscriptionsResponseTranscriptionsItemsStatus'
        created_at:
          type: string
        config:
          type: object
          additionalProperties:
            description: Any type
        download_urls:
          oneOf:
            - $ref: '#/components/schemas/BotTranscriptionsResponseTranscriptionsItemsDownloadUrls'
            - type: 'null'
      title: BotTranscriptionsResponseTranscriptionsItems
    BotTranscriptionsResponse:
      type: object
      properties:
        bot_id:
          type: string
        transcriptions:
          type: array
          items:
            $ref: '#/components/schemas/BotTranscriptionsResponseTranscriptionsItems'
      title: BotTranscriptionsResponse
    CalendarCreateRequest:
      type: object
      properties:
        google_client_id:
          type: string
        google_client_secret:
          type: string
        google_refresh_token:
          type: string
      required:
        - google_client_id
        - google_client_secret
        - google_refresh_token
      title: CalendarCreateRequest
    CreateCalendarResponseCalendarsItems:
      type: object
      properties:
        id:
          type: string
        summary:
          type: string
        description:
          type:
            - string
            - 'null'
        isPrimary:
          type: boolean
        accessRole:
          type: string
        timeZone:
          type: string
        backgroundColor:
          type: string
        foregroundColor:
          type: string
        selected:
          type: boolean
      title: CreateCalendarResponseCalendarsItems
    CreateCalendarResponseWatchSetupFailedCalendarsItems:
      type: object
      properties: {}
      title: CreateCalendarResponseWatchSetupFailedCalendarsItems
    CreateCalendarResponseWatchSetupWatchResultsItems:
      type: object
      properties:
        calendar_id:
          type: string
        calendar_summary:
          type: string
        channel_id:
          type: string
        expiration:
          type: string
      title: CreateCalendarResponseWatchSetupWatchResultsItems
    CreateCalendarResponseWatchSetup:
      type: object
      properties:
        success:
          type: boolean
        status:
          type: string
        watches_setup:
          type: integer
        message:
          type: string
        failed_calendars:
          type: array
          items:
            $ref: '#/components/schemas/CreateCalendarResponseWatchSetupFailedCalendarsItems'
        watch_results:
          type: array
          items:
            $ref: '#/components/schemas/CreateCalendarResponseWatchSetupWatchResultsItems'
      title: CreateCalendarResponseWatchSetup
    CreateCalendarResponse:
      type: object
      properties:
        calendar_id:
          type: string
        platform:
          type: string
        user_email:
          type: string
        user_name:
          type: string
        primary_calendar_id:
          type: string
        message:
          type: string
        calendars:
          type: array
          items:
            $ref: '#/components/schemas/CreateCalendarResponseCalendarsItems'
        watch_setup:
          $ref: '#/components/schemas/CreateCalendarResponseWatchSetup'
      title: CreateCalendarResponse
    Calendar_disconnectCalendar_Response_200:
      type: object
      properties: {}
      description: Empty response body
      title: Calendar_disconnectCalendar_Response_200
    GetCalendarsResponseCalendarsItems:
      type: object
      properties:
        id:
          type: string
        summary:
          type: string
        description:
          type:
            - string
            - 'null'
        isPrimary:
          type: boolean
        accessRole:
          type: string
        timeZone:
          type: string
        backgroundColor:
          type: string
        foregroundColor:
          type: string
        selected:
          type: boolean
        hidden:
          type: boolean
      title: GetCalendarsResponseCalendarsItems
    GetCalendarsResponse:
      type: object
      properties:
        total:
          type: integer
        user_id:
          type: string
        calendars:
          type: array
          items:
            $ref: '#/components/schemas/GetCalendarsResponseCalendarsItems'
      title: GetCalendarsResponse
    ScheduleEventResponseBotConfig:
      type: object
      properties:
        bot_name:
          type: string
        bot_message:
          type: string
        bot_image_url:
          type: string
        audio_required:
          type: boolean
        video_required:
          type: boolean
        callback_url:
          type: string
        meeting_url:
          type: string
        join_at:
          type: string
        deduplication_key:
          type: string
        automatic_leave:
          type: object
          additionalProperties:
            description: Any type
        recording_config:
          type: object
          additionalProperties:
            description: Any type
        custom_attributes:
          type: object
          additionalProperties:
            description: Any type
        live_audio_required:
          type: object
          additionalProperties:
            description: Any type
        live_transcription_required:
          type: object
          additionalProperties:
            description: Any type
      title: ScheduleEventResponseBotConfig
    ScheduleEventResponse:
      type: object
      properties:
        scheduled:
          type: boolean
        schedule_id:
          type: string
        bot_id:
          type: string
        schedule_group:
          type: string
        event_id:
          type: string
        scheduled_time:
          type: string
        existing_schedules:
          type: integer
        occurrence_date:
          type:
            - string
            - 'null'
        is_recurring_occurrence:
          type: boolean
        bot_config:
          $ref: '#/components/schemas/ScheduleEventResponseBotConfig'
      title: ScheduleEventResponse
    Calendar_removeScheduleEvent_Response_200:
      type: object
      properties: {}
      description: Empty response body
      title: Calendar_removeScheduleEvent_Response_200
    FetchEventsResponseResultsItems:
      type: object
      properties:
        id:
          type: string
        start_time:
          type: string
        end_time:
          type: string
        calendar_id:
          type: string
        platform:
          type: string
        platform_id:
          type: string
        ical_uid:
          type: string
        meeting_platform:
          type: string
        meeting_url:
          type: string
        created_at:
          type: string
        updated_at:
          type: string
        is_deleted:
          type: boolean
        raw:
          type: object
          additionalProperties:
            description: Any type
        bots:
          type: array
          items:
            type: object
            additionalProperties:
              description: Any type
      title: FetchEventsResponseResultsItems
    FetchEventsResponse:
      type: object
      properties:
        next:
          type:
            - string
            - 'null'
        previous:
          type:
            - string
            - 'null'
        has_more:
          type: boolean
        results:
          type: array
          items:
            $ref: '#/components/schemas/FetchEventsResponseResultsItems'
      title: FetchEventsResponse
    ToggleRecurringEventRequest:
      type: object
      properties:
        event_id:
          type: string
        recurring_enabled:
          type: boolean
      required:
        - event_id
        - recurring_enabled
      title: ToggleRecurringEventRequest
    Calendar_toggleRecurringEvent_Response_200:
      type: object
      properties: {}
      description: Empty response body
      title: Calendar_toggleRecurringEvent_Response_200
    SetupCronRequestDefaultBotConfig:
      type: object
      properties:
        bot_name:
          type: string
        audio_required:
          type: boolean
        video_required:
          type: boolean
        bot_message:
          type: string
        bot_image_url:
          type: string
        automatic_leave:
          $ref: '#/components/schemas/AutomaticLeaveConfig'
      title: SetupCronRequestDefaultBotConfig
    SetupCronRequest:
      type: object
      properties:
        default_bot_config:
          $ref: '#/components/schemas/SetupCronRequestDefaultBotConfig'
      title: SetupCronRequest
    SetupCronResponseDefaultBotConfigAutomaticLeave:
      type: object
      properties:
        waiting_room_timeout:
          type: integer
        everyone_left_timeout:
          type: integer
        voice_inactivity_timeout:
          type: integer
        in_call_recording_timeout:
          type: integer
        recording_permission_denied_timeout:
          type: integer
      title: SetupCronResponseDefaultBotConfigAutomaticLeave
    SetupCronResponseDefaultBotConfig:
      type: object
      properties:
        bot_name:
          type: string
        audio_required:
          type: boolean
        video_required:
          type: boolean
        bot_message:
          type: string
        bot_image_url:
          type: string
        automatic_leave:
          $ref: '#/components/schemas/SetupCronResponseDefaultBotConfigAutomaticLeave'
      title: SetupCronResponseDefaultBotConfig
    SetupCronResponse:
      type: object
      properties:
        message:
          type: string
        auto_schedule_enabled:
          type: boolean
        default_bot_config:
          $ref: '#/components/schemas/SetupCronResponseDefaultBotConfig'
      title: SetupCronResponse
    Calendar_disableCron_Response_200:
      type: object
      properties: {}
      description: Empty response body
      title: Calendar_disableCron_Response_200
    LoginGroupRequestLoginMode:
      type: string
      enum:
        - always
        - if_required
      title: LoginGroupRequestLoginMode
    LoginGroupRequest:
      type: object
      properties:
        user_id:
          type: string
        name:
          type: string
        login_mode:
          $ref: '#/components/schemas/LoginGroupRequestLoginMode'
      required:
        - user_id
        - name
      title: LoginGroupRequest
    CreateGoogleDomainResponse:
      type: object
      properties:
        sso_workspace_domain:
          type: string
        name:
          type: string
        login_mode:
          type: string
        max_concurrent_per_login:
          type: integer
        created_at:
          type: string
      title: CreateGoogleDomainResponse
    ListGoogleDomainsResponseDomainsItems:
      type: object
      properties:
        sso_workspace_domain:
          type: string
        name:
          type: string
        login_mode:
          type: string
        max_concurrent_per_login:
          type: string
        login_count:
          type: integer
        active_login_count:
          type: integer
        created_at:
          type: string
      title: ListGoogleDomainsResponseDomainsItems
    ListGoogleDomainsResponse:
      type: object
      properties:
        domains:
          type: array
          items:
            $ref: '#/components/schemas/ListGoogleDomainsResponseDomainsItems'
      title: ListGoogleDomainsResponse
    GetGoogleDomainResponseLoginsItems:
      type: object
      properties:
        login_id:
          type: string
        email:
          type: string
        is_active:
          type: boolean
        active_sessions:
          type: integer
        last_test_status:
          type: string
        last_tested_at:
          type:
            - string
            - 'null'
      title: GetGoogleDomainResponseLoginsItems
    GetGoogleDomainResponse:
      type: object
      properties:
        sso_workspace_domain:
          type: string
        name:
          type: string
        login_mode:
          type: string
        max_concurrent_per_login:
          type: string
        logins:
          type: array
          items:
            $ref: '#/components/schemas/GetGoogleDomainResponseLoginsItems'
        created_at:
          type: string
        updated_at:
          type: string
      title: GetGoogleDomainResponse
    UpdateGoogleDomainResponseDomain:
      type: object
      properties:
        sso_workspace_domain:
          type: string
        name:
          type: string
        login_mode:
          type: string
        updated_at:
          type: string
      title: UpdateGoogleDomainResponseDomain
    UpdateGoogleDomainResponse:
      type: object
      properties:
        success:
          type: boolean
        domain:
          $ref: '#/components/schemas/UpdateGoogleDomainResponseDomain'
      title: UpdateGoogleDomainResponse
    Google Login_deleteGoogleDomain_Response_200:
      type: object
      properties: {}
      description: Empty response body
      title: Google Login_deleteGoogleDomain_Response_200
    CreateGoogleLoginResponse:
      type: object
      properties:
        login_id:
          type: string
        domain:
          type: string
        email:
          type: string
        is_active:
          type: boolean
        created_at:
          type: string
      title: CreateGoogleLoginResponse
    ListGoogleLoginsResponseLoginsItems:
      type: object
      properties:
        login_id:
          type: string
        email:
          type: string
        is_active:
          type: boolean
        active_sessions:
          type: integer
        last_test_status:
          type: string
        last_tested_at:
          type:
            - string
            - 'null'
        created_at:
          type: string
      title: ListGoogleLoginsResponseLoginsItems
    ListGoogleLoginsResponse:
      type: object
      properties:
        logins:
          type: array
          items:
            $ref: '#/components/schemas/ListGoogleLoginsResponseLoginsItems'
      title: ListGoogleLoginsResponse
    UpdateGoogleLoginResponseLogin:
      type: object
      properties:
        login_id:
          type: string
        email:
          type: string
        is_active:
          type: boolean
        updated_at:
          type: string
      title: UpdateGoogleLoginResponseLogin
    UpdateGoogleLoginResponse:
      type: object
      properties:
        success:
          type: boolean
        login:
          $ref: '#/components/schemas/UpdateGoogleLoginResponseLogin'
      title: UpdateGoogleLoginResponse
    DeleteGoogleLoginResponse:
      type: object
      properties:
        success:
          type: boolean
        message:
          type: string
      title: DeleteGoogleLoginResponse
    MiaCreateConfigRequestMode:
      type: string
      enum:
        - pipeline
        - realtime
      title: MiaCreateConfigRequestMode
    MiaModelConfigThinkingConfig:
      type: object
      properties:
        include_thoughts:
          type: boolean
        thinking_budget:
          type: integer
      title: MiaModelConfigThinkingConfig
    MIAModelConfig:
      type: object
      properties:
        provider:
          type: string
        model:
          type: string
        system_prompt:
          type: string
        first_message:
          type: string
        max_token:
          type: integer
        temperature:
          type: number
          format: double
        voice:
          type: string
          description: Used for realtime mode models that have a built-in voice.
        modalities:
          type: array
          items:
            type: string
        max_response_output_tokens:
          type: integer
        max_tokens:
          type: integer
        top_p:
          type: number
          format: double
        frequency_penalty:
          type: number
          format: double
        presence_penalty:
          type: number
          format: double
        thinking_config:
          $ref: '#/components/schemas/MiaModelConfigThinkingConfig'
        enable_affective_dialog:
          type: boolean
        proactivity:
          type: boolean
        disable_automatic_activity_detection:
          type: boolean
      title: MIAModelConfig
    MIAVoiceConfig:
      type: object
      properties:
        provider:
          type: string
        model:
          type: string
        voice_id:
          type: string
        speed:
          type: number
          format: double
      title: MIAVoiceConfig
    MIATranscriberConfig:
      type: object
      properties:
        provider:
          type: string
        model:
          type: string
        language:
          type: string
        boostwords:
          type: array
          items:
            type: string
      title: MIATranscriberConfig
    MiaAgentConfigInterruptionMode:
      type: string
      enum:
        - adaptive
        - vad
      title: MiaAgentConfigInterruptionMode
    MIAInterruptionsConfig:
      type: object
      properties:
        min_duration_seconds:
          type: number
          format: double
        word_threshold:
          type: integer
      title: MIAInterruptionsConfig
    MIAAgentConfig:
      type: object
      properties:
        tools:
          type: array
          items:
            type: string
        preemptive_generation:
          type: boolean
        user_away_timeout:
          type: number
          format: double
        interruption_mode:
          $ref: '#/components/schemas/MiaAgentConfigInterruptionMode'
        interruptions:
          $ref: '#/components/schemas/MIAInterruptionsConfig'
        false_interruption_timeout:
          type: number
          format: double
        vad_eagerness:
          type: string
        vad_type:
          type: string
        enable_interruptions:
          type: boolean
        resume_false_interruption:
          type: boolean
        response_modality:
          type: string
        mcp_servers:
          type: object
          additionalProperties:
            description: Any type
        tools_enabled:
          type: boolean
        vad_threshold:
          type: number
          format: double
        vad_prefix_padding_ms:
          type: integer
        vad_silence_duration_ms:
          type: integer
        turn_detection:
          type: string
        vad_activation_threshold:
          type: number
          format: double
        vad_deactivation_threshold:
          type:
            - number
            - 'null'
          format: double
        vad_min_silence_duration_ms:
          type: integer
        vad_min_speech_duration_ms:
          type: integer
        vad_prefix_padding_duration_ms:
          type: integer
        endpointing_mode:
          type: string
        min_endpointing_delay:
          type: number
          format: double
        max_endpointing_delay:
          type: number
          format: double
      title: MIAAgentConfig
    MIAAudioConfig:
      type: object
      properties:
        sample_rate:
          type: integer
        num_channels:
          type: integer
      title: MIAAudioConfig
    MIAWakeWordConfig:
      type: object
      properties:
        enabled:
          type: boolean
        words:
          type: array
          items:
            type: string
        timeout:
          type: integer
      title: MIAWakeWordConfig
    MIAAvatarConfig:
      type: object
      properties:
        provider:
          type: string
        enabled:
          type: boolean
        avatar_id:
          type: string
      title: MIAAvatarConfig
    MIACreateConfigRequest:
      type: object
      properties:
        agent_name:
          type: string
        mode:
          $ref: '#/components/schemas/MiaCreateConfigRequestMode'
        model:
          $ref: '#/components/schemas/MIAModelConfig'
        voice:
          $ref: '#/components/schemas/MIAVoiceConfig'
        transcriber:
          $ref: '#/components/schemas/MIATranscriberConfig'
        agent:
          $ref: '#/components/schemas/MIAAgentConfig'
        audio:
          $ref: '#/components/schemas/MIAAudioConfig'
        wake_word:
          oneOf:
            - $ref: '#/components/schemas/MIAWakeWordConfig'
            - type: 'null'
        Avatar:
          $ref: '#/components/schemas/MIAAvatarConfig'
      required:
        - agent_name
        - mode
        - model
      title: MIACreateConfigRequest
    MiaAgentConfigObjectMode:
      type: string
      enum:
        - pipeline
        - realtime
      title: MiaAgentConfigObjectMode
    MIAAgentConfigObject:
      type: object
      properties:
        AgentConfigID:
          type: string
        UserID:
          type: string
        AgentName:
          type: string
        Mode:
          $ref: '#/components/schemas/MiaAgentConfigObjectMode'
        Model:
          $ref: '#/components/schemas/MIAModelConfig'
        Voice:
          oneOf:
            - $ref: '#/components/schemas/MIAVoiceConfig'
            - type: 'null'
        Transcriber:
          oneOf:
            - $ref: '#/components/schemas/MIATranscriberConfig'
            - type: 'null'
        Agent:
          $ref: '#/components/schemas/MIAAgentConfig'
        Audio:
          $ref: '#/components/schemas/MIAAudioConfig'
        Avatar:
          $ref: '#/components/schemas/MIAAvatarConfig'
        WakeWord:
          type: object
          additionalProperties:
            description: Any type
        CreatedAt:
          type: string
        UpdatedAt:
          type: string
      description: A full agent configuration object as returned by the API.
      title: MIAAgentConfigObject
    MIACreateConfigResponse:
      type: object
      properties:
        message:
          type: string
        agent_config_id:
          type: string
        agent_config:
          $ref: '#/components/schemas/MIAAgentConfigObject'
      title: MIACreateConfigResponse
    MiaUpdateConfigRequestMode:
      type: string
      enum:
        - pipeline
        - realtime
      title: MiaUpdateConfigRequestMode
    MIAUpdateConfigRequest:
      type: object
      properties:
        agent_config_id:
          type: string
        agent_name:
          type: string
        mode:
          $ref: '#/components/schemas/MiaUpdateConfigRequestMode'
        model:
          $ref: '#/components/schemas/MIAModelConfig'
        voice:
          $ref: '#/components/schemas/MIAVoiceConfig'
        transcriber:
          $ref: '#/components/schemas/MIATranscriberConfig'
        agent:
          $ref: '#/components/schemas/MIAAgentConfig'
        audio:
          $ref: '#/components/schemas/MIAAudioConfig'
      required:
        - agent_config_id
      title: MIAUpdateConfigRequest
    MIAUpdateConfigResponse:
      type: object
      properties:
        message:
          type: string
        agent_config:
          $ref: '#/components/schemas/MIAAgentConfigObject'
      title: MIAUpdateConfigResponse
    MIAGetConfigsResponse:
      type: object
      properties:
        agent_configs:
          type: array
          items:
            $ref: '#/components/schemas/MIAAgentConfigObject'
        count:
          type: integer
      title: MIAGetConfigsResponse
    MIADeleteConfigResponse:
      type: object
      properties:
        message:
          type: string
      title: MIADeleteConfigResponse
  securitySchemes:
    TokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Format: Token <your_api_key>'
