Vapi Insight API

Insight endpoints.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

vapi-ai-insight-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Vapi Analytics Insight API
  description: Vapi API — Analytics resource. Voice AI for developers.
  version: '1.0'
  contact:
    name: Vapi
    url: https://vapi.ai
servers:
- url: https://api.vapi.ai
security:
- bearer: []
tags:
- name: Insight
  description: Insight endpoints.
paths:
  /reporting/insight:
    post:
      operationId: InsightController_create
      summary: Create Insight
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/CreateBarInsightFromCallTableDTO'
                title: CreateBarInsightFromCallTableDTO
              - $ref: '#/components/schemas/CreatePieInsightFromCallTableDTO'
                title: CreatePieInsightFromCallTableDTO
              - $ref: '#/components/schemas/CreateLineInsightFromCallTableDTO'
                title: CreateLineInsightFromCallTableDTO
              - $ref: '#/components/schemas/CreateTextInsightFromCallTableDTO'
                title: CreateTextInsightFromCallTableDTO
              discriminator:
                propertyName: type
                mapping:
                  bar: '#/components/schemas/CreateBarInsightFromCallTableDTO'
                  pie: '#/components/schemas/CreatePieInsightFromCallTableDTO'
                  line: '#/components/schemas/CreateLineInsightFromCallTableDTO'
                  text: '#/components/schemas/CreateTextInsightFromCallTableDTO'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/BarInsight'
                - $ref: '#/components/schemas/PieInsight'
                - $ref: '#/components/schemas/LineInsight'
                - $ref: '#/components/schemas/TextInsight'
                discriminator:
                  propertyName: type
                  mapping:
                    bar: '#/components/schemas/BarInsight'
                    pie: '#/components/schemas/PieInsight'
                    line: '#/components/schemas/LineInsight'
                    text: '#/components/schemas/TextInsight'
      tags:
      - Insight
      security:
      - bearer: []
    get:
      operationId: InsightController_findAll
      summary: Get Insights
      parameters:
      - name: id
        required: false
        in: query
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: This is the page number to return. Defaults to 1.
        schema:
          minimum: 1
          type: number
      - name: sortOrder
        required: false
        in: query
        description: This is the sort order for pagination. Defaults to 'DESC'.
        schema:
          enum:
          - ASC
          - DESC
          type: string
      - name: sortBy
        required: false
        in: query
        description: This is the column to sort by. Defaults to 'createdAt'.
        schema:
          enum:
          - createdAt
          - duration
          - cost
          type: string
      - name: limit
        required: false
        in: query
        description: This is the maximum number of items to return. Defaults to 100.
        schema:
          minimum: 0
          maximum: 1000
          type: number
      - name: createdAtGt
        required: false
        in: query
        description: This will return items where the createdAt is greater than the specified value.
        schema:
          format: date-time
          type: string
      - name: createdAtLt
        required: false
        in: query
        description: This will return items where the createdAt is less than the specified value.
        schema:
          format: date-time
          type: string
      - name: createdAtGe
        required: false
        in: query
        description: This will return items where the createdAt is greater than or equal to the specified value.
        schema:
          format: date-time
          type: string
      - name: createdAtLe
        required: false
        in: query
        description: This will return items where the createdAt is less than or equal to the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtGt
        required: false
        in: query
        description: This will return items where the updatedAt is greater than the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtLt
        required: false
        in: query
        description: This will return items where the updatedAt is less than the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtGe
        required: false
        in: query
        description: This will return items where the updatedAt is greater than or equal to the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtLe
        required: false
        in: query
        description: This will return items where the updatedAt is less than or equal to the specified value.
        schema:
          format: date-time
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightPaginatedResponse'
      tags:
      - Insight
      security:
      - bearer: []
  /reporting/insight/{id}:
    patch:
      operationId: InsightController_update
      summary: Update Insight
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier for the resource.
        schema:
          format: uuid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/UpdateBarInsightFromCallTableDTO'
                title: UpdateBarInsightFromCallTableDTO
              - $ref: '#/components/schemas/UpdatePieInsightFromCallTableDTO'
                title: UpdatePieInsightFromCallTableDTO
              - $ref: '#/components/schemas/UpdateLineInsightFromCallTableDTO'
                title: UpdateLineInsightFromCallTableDTO
              - $ref: '#/components/schemas/UpdateTextInsightFromCallTableDTO'
                title: UpdateTextInsightFromCallTableDTO
              discriminator:
                propertyName: type
                mapping:
                  bar: '#/components/schemas/UpdateBarInsightFromCallTableDTO'
                  pie: '#/components/schemas/UpdatePieInsightFromCallTableDTO'
                  line: '#/components/schemas/UpdateLineInsightFromCallTableDTO'
                  text: '#/components/schemas/UpdateTextInsightFromCallTableDTO'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/BarInsight'
                - $ref: '#/components/schemas/PieInsight'
                - $ref: '#/components/schemas/LineInsight'
                - $ref: '#/components/schemas/TextInsight'
                discriminator:
                  propertyName: type
                  mapping:
                    bar: '#/components/schemas/BarInsight'
                    pie: '#/components/schemas/PieInsight'
                    line: '#/components/schemas/LineInsight'
                    text: '#/components/schemas/TextInsight'
      tags:
      - Insight
      security:
      - bearer: []
    get:
      operationId: InsightController_findOne
      summary: Get Insight
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier for the resource.
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/BarInsight'
                - $ref: '#/components/schemas/PieInsight'
                - $ref: '#/components/schemas/LineInsight'
                - $ref: '#/components/schemas/TextInsight'
                discriminator:
                  propertyName: type
                  mapping:
                    bar: '#/components/schemas/BarInsight'
                    pie: '#/components/schemas/PieInsight'
                    line: '#/components/schemas/LineInsight'
                    text: '#/components/schemas/TextInsight'
      tags:
      - Insight
      security:
      - bearer: []
    delete:
      operationId: InsightController_remove
      summary: Delete Insight
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier for the resource.
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/BarInsight'
                - $ref: '#/components/schemas/PieInsight'
                - $ref: '#/components/schemas/LineInsight'
                - $ref: '#/components/schemas/TextInsight'
                discriminator:
                  propertyName: type
                  mapping:
                    bar: '#/components/schemas/BarInsight'
                    pie: '#/components/schemas/PieInsight'
                    line: '#/components/schemas/LineInsight'
                    text: '#/components/schemas/TextInsight'
      tags:
      - Insight
      security:
      - bearer: []
  /reporting/insight/{id}/run:
    post:
      operationId: InsightController_run
      summary: Run Insight
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier for the resource.
        schema:
          format: uuid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InsightRunDTO'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightRunResponse'
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightRunResponse'
      tags:
      - Insight
      security:
      - bearer: []
  /reporting/insight/preview:
    post:
      operationId: InsightController_preview
      summary: Preview Insight
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/CreateBarInsightFromCallTableDTO'
                title: CreateBarInsightFromCallTableDTO
              - $ref: '#/components/schemas/CreatePieInsightFromCallTableDTO'
                title: CreatePieInsightFromCallTableDTO
              - $ref: '#/components/schemas/CreateLineInsightFromCallTableDTO'
                title: CreateLineInsightFromCallTableDTO
              - $ref: '#/components/schemas/CreateTextInsightFromCallTableDTO'
                title: CreateTextInsightFromCallTableDTO
              discriminator:
                propertyName: type
                mapping:
                  bar: '#/components/schemas/CreateBarInsightFromCallTableDTO'
                  pie: '#/components/schemas/CreatePieInsightFromCallTableDTO'
                  line: '#/components/schemas/CreateLineInsightFromCallTableDTO'
                  text: '#/components/schemas/CreateTextInsightFromCallTableDTO'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightRunResponse'
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightRunResponse'
      tags:
      - Insight
      security:
      - bearer: []
components:
  schemas:
    JSONQueryOnEventsTable:
      type: object
      properties:
        type:
          type: string
          description: This is the type of query. Only allowed type is "vapiql-json".
          example: vapiql-json
          enum:
          - vapiql-json
        table:
          type: string
          description: 'This is the table that will be queried.

            Must be "events" for event-based insights.'
          enum:
          - events
        'on':
          type: string
          description: The event type to query
          example: assistant.model.requestFailed
          enum:
          - call.started
          - call.ended
          - call.inProgress
          - call.queued
          - call.transportConnected
          - call.transportDisconnected
          - call.transportReconnected
          - call.transferInitiated
          - call.transferCompleted
          - call.transferFailed
          - call.transferCancelled
          - call.handoffInitiated
          - call.handoffCompleted
          - call.handoffFailed
          - call.assistantSwapped
          - call.assistantStarted
          - call.customerJoined
          - call.customerLeft
          - call.controlReceived
          - call.listenStarted
          - call.recordingStarted
          - call.recordingPaused
          - call.recordingResumed
          - call.voicemailDetected
          - call.voicemailNotDetected
          - call.dtmfReceived
          - call.dtmfSent
          - call.amdDetected
          - call.hookTriggered
          - call.hookSucceeded
          - call.hookFailed
          - call.statusReceived
          - call.silenceTimeout
          - call.microphoneTimeout
          - call.maxDurationReached
          - assistant.voice.requestStarted
          - assistant.voice.requestSucceeded
          - assistant.voice.requestFailed
          - assistant.voice.connectionOpened
          - assistant.voice.connectionClosed
          - assistant.voice.firstAudioReceived
          - assistant.voice.audioChunkReceived
          - assistant.voice.generationSucceeded
          - assistant.voice.generationFailed
          - assistant.voice.textPushed
          - assistant.voice.reconnecting
          - assistant.voice.cleanup
          - assistant.voice.clearing
          - assistant.voice.voiceSwitched
          - assistant.model.requestStarted
          - assistant.model.requestSucceeded
          - assistant.model.requestFailed
          - assistant.model.requestAttemptStarted
          - assistant.model.requestAttemptSucceeded
          - assistant.model.requestAttemptFailed
          - assistant.model.connectionOpened
          - assistant.model.connectionClosed
          - assistant.model.firstTokenReceived
          - assistant.model.tokenReceived
          - assistant.model.responseSucceeded
          - assistant.model.responseFailed
          - assistant.model.toolCallsReceived
          - assistant.model.reconnecting
          - assistant.model.cleanup
          - assistant.model.clearing
          - assistant.tool.started
          - assistant.tool.completed
          - assistant.tool.failed
          - assistant.tool.delayedMessageSent
          - assistant.tool.timeout
          - assistant.tool.asyncCallbackReceived
          - assistant.transcriber.requestStarted
          - assistant.transcriber.requestSucceeded
          - assistant.transcriber.requestFailed
          - assistant.transcriber.connectionOpened
          - assistant.transcriber.connectionClosed
          - assistant.transcriber.partialTranscript
          - assistant.transcriber.finalTranscript
          - assistant.transcriber.keepAlive
          - assistant.transcriber.reconnecting
          - assistant.transcriber.cleanup
          - assistant.transcriber.clearing
          - assistant.transcriber.transcriptIgnored
          - assistant.transcriber.languageSwitched
          - assistant.analysis.structuredOutputGenerated
          - pipeline.turnStarted
          - pipeline.cleared
          - pipeline.botSpeechStarted
          - pipeline.botSpeechStopped
          - pipeline.userSpeechStarted
          - pipeline.userSpeechStopped
          - pipeline.endpointingTriggered
          - pipeline.firstMessageStarted
          - pipeline.firstMessageCompleted
        operation:
          type: string
          description: 'This is the operation to perform on matching events.

            - "count": Returns the raw count of matching events

            - "percentage": Returns (count of matching events / total calls) * 100'
          example: count
          enum:
          - count
          - percentage
        filters:
          type: array
          description: 'These are the filters to apply to the events query.

            Each filter filters on a field specific to the event type.'
          items:
            oneOf:
            - $ref: '#/components/schemas/EventsTableStringCondition'
            - $ref: '#/components/schemas/EventsTableNumberCondition'
            - $ref: '#/components/schemas/EventsTableBooleanCondition'
        name:
          type: string
          description: 'This is the name of the query.

            It will be used to label the query in the insight board on the UI.'
          example: Model Failures
      required:
      - type
      - table
      - 'on'
      - operation
    EventsTableNumberCondition:
      type: object
      properties:
        column:
          type: string
          description: The number field name from the event data
          example: latency
        operator:
          type: string
          description: Number comparison operator
          example: '>='
          enum:
          - '='
          - '!='
          - '>'
          - '>='
          - <
          - <=
        value:
          type: number
          description: The number value to compare
          example: 1000
      required:
      - column
      - operator
      - value
    InsightRunResponse:
      type: object
      properties:
        id:
          type: string
        insightId:
          type: string
        orgId:
          type: string
        createdAt:
          format: date-time
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
      - id
      - insightId
      - orgId
      - createdAt
      - updatedAt
    FilterStringTypeColumnOnCallTable:
      type: object
      properties:
        column:
          type: string
          description: 'This is the column in the call table that will be filtered on.

            String Type columns are columns where the rows store data as a string.

            Must be a valid column for the selected table.'
          example: assistant_id
          enum:
          - assistantId
          - workflowId
          - squadId
          - phoneNumberId
          - type
          - customerNumber
          - status
          - endedReason
          - forwardedPhoneNumber
          - campaignId
        operator:
          type: string
          description: 'This is the operator to use for the filter.

            For string type columns, the operator must be "=", "!=", "contains", "not contains"'
          example: '"=" or "!="'
          enum:
          - '='
          - '!='
          - contains
          - not_contains
        value:
          type: string
          description: This is the value to filter on.
      required:
      - column
      - operator
      - value
    FilterStringArrayTypeColumnOnCallTable:
      type: object
      properties:
        column:
          type: string
          description: 'This is the column in the call table that will be filtered on.

            String Array Type columns are the same as String Type columns, but provides the ability to filter on multiple values provided as an array.

            Must be a valid column for the selected table.'
          example: assistant_id
          enum:
          - assistantId
          - workflowId
          - squadId
          - phoneNumberId
          - type
          - customerNumber
          - status
          - endedReason
          - forwardedPhoneNumber
          - campaignId
        operator:
          type: string
          description: 'This is the operator to use for the filter.

            The operator must be `in` or `not_in`.'
          example: '"in" or "not_in"'
          enum:
          - in
          - not_in
          - is_empty
          - is_not_empty
        value:
          description: These are the values to filter on.
          type: array
          items:
            type: string
      required:
      - column
      - operator
      - value
    FilterNumberTypeColumnOnCallTable:
      type: object
      properties:
        column:
          type: string
          description: 'This is the column in the call table that will be filtered on.

            Number Type columns are columns where the rows store data as a number.

            Must be a valid column for the selected table.'
          example: duration
          enum:
          - duration
          - cost
          - averageModelLatency
          - averageVoiceLatency
          - averageTranscriberLatency
          - averageTurnLatency
          - averageEndpointingLatency
        operator:
          type: string
          description: 'This is the operator to use for the filter.

            For number type columns, the operator must be "=", ">", "<", ">=", "<="'
          example: '"=" or ">" or "<" or ">=" or "<="'
          enum:
          - '='
          - '!='
          - '>'
          - <
          - '>='
          - <=
        value:
          type: number
          description: This is the value to filter on.
      required:
      - column
      - operator
      - value
    UpdateLineInsightFromCallTableDTO:
      type: object
      properties:
        name:
          type: string
          description: This is the name of the Insight.
          minLength: 1
          maxLength: 255
        type:
          type: string
          description: 'This is the type of the Insight.

            It is required to be `line` to create a line insight.'
          enum:
          - line
        formulas:
          type: array
          description: 'Formulas are mathematical expressions applied on the data returned by the queries to transform them before being used to create the insight.

            The formulas needs to be a valid mathematical expression, supported by MathJS - https://mathjs.org/docs/expressions/syntax.html

            A formula is created by using the query names as the variable.

            The formulas must contain at least one query name in the LiquidJS format {{query_name}} or {{[''query name'']}} which will be substituted with the query result.

            For example, if you have 2 queries, ''Was Booking Made'' and ''Average Call Duration'', you can create a formula like this:

            ```

            {{[''Query 1'']}} / {{[''Query 2'']}} * 100

            ```


            ```

            ({{[Query 1]}} * 10) + {{[Query 2]}}

            ```

            This will take the


            You can also use the query names as the variable in the formula.'
          items:
            $ref: '#/components/schemas/InsightFormula'
        metadata:
          description: This is the metadata for the insight.
          allOf:
          - $ref: '#/components/schemas/LineInsightMetadata'
        timeRange:
          $ref: '#/components/schemas/InsightTimeRangeWithStep'
        groupBy:
          type: string
          description: 'This is the group by column for the insight when table is `call`.

            These are the columns to group the results by.

            All results are grouped by the time range step by default.'
          example:
          - assistant_id
          enum:
          - assistantId
          - workflowId
          - squadId
          - phoneNumberId
          - type
          - endedReason
          - customerNumber
          - campaignId
          - artifact.structuredOutputs[OutputID]
        queries:
          type: array
          description: These are the queries to run to generate the insight.
          items:
            oneOf:
            - $ref: '#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn'
              title: JSONQueryOnCallTableWithStringTypeColumn
            - $ref: '#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn'
              title: JSONQueryOnCallTableWithNumberTypeColumn
            - $ref: '#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn'
              title: JSONQueryOnCallTableWithStructuredOutputColumn
    InsightTimeRangeWithStep:
      type: object
      properties:
        step:
          type: string
          description: 'This is the group by step for aggregation.


            If not provided, defaults to group by day.'
          enum:
          - minute
          - hour
          - day
          - week
          - month
          - quarter
          - year
        start:
          type: object
          description: 'This is the start date for the time range.


            Should be a valid ISO 8601 date-time string or relative time string.

            If not provided, defaults to the 7 days ago.


            Relative time strings of the format "-{number}{unit}" are allowed.


            Valid units are:

            - d: days

            - h: hours

            - w: weeks

            - m: months

            - y: years'
          example: '"2025-01-01" or "-7d" or "now"'
        end:
          type: object
          description: 'This is the end date for the time range.


            Should be a valid ISO 8601 date-time string or relative time string.

            If not provided, defaults to now.


            Relative time strings of the format "-{number}{unit}" are allowed.


            Valid units are:

            - d: days

            - h: hours

            - w: weeks

            - m: months

            - y: years'
          example: '"2025-01-01" or "now"'
        timezone:
          type: string
          description: 'This is the timezone you want to set for the query.


            If not provided, defaults to UTC.'
    InsightTimeRange:
      type: object
      properties:
        start:
          type: object
          description: 'This is the start date for the time range.


            Should be a valid ISO 8601 date-time string or relative time string.

            If not provided, defaults to the 7 days ago.


            Relative time strings of the format "-{number}{unit}" are allowed.


            Valid units are:

            - d: days

            - h: hours

            - w: weeks

            - m: months

            - y: years'
          example: '"2025-01-01" or "-7d" or "now"'
        end:
          type: object
          description: 'This is the end date for the time range.


            Should be a valid ISO 8601 date-time string or relative time string.

            If not provided, defaults to now.


            Relative time strings of the format "-{number}{unit}" are allowed.


            Valid units are:

            - d: days

            - h: hours

            - w: weeks

            - m: months

            - y: years'
          example: '"2025-01-01" or "now"'
        timezone:
          type: string
          description: 'This is the timezone you want to set for the query.


            If not provided, defaults to UTC.'
    UpdateBarInsightFromCallTableDTO:
      type: object
      properties:
        name:
          type: string
          description: This is the name of the Insight.
          minLength: 1
          maxLength: 255
        type:
          type: string
          description: 'This is the type of the Insight.

            It is required to be `bar` to create a bar insight.'
          enum:
          - bar
        formulas:
          type: array
          description: 'Formulas are mathematical expressions applied on the data returned by the queries to transform them before being used to create the insight.

            The formulas needs to be a valid mathematical expression, supported by MathJS - https://mathjs.org/docs/expressions/syntax.html

            A formula is created by using the query names as the variable.

            The formulas must contain at least one query name in the LiquidJS format {{query_name}} or {{[''query name'']}} which will be substituted with the query result.

            For example, if you have 2 queries, ''Was Booking Made'' and ''Average Call Duration'', you can create a formula like this:

            ```

            {{[''Query 1'']}} / {{[''Query 2'']}} * 100

            ```


            ```

            ({{[Query 1]}} * 10) + {{[Query 2]}}

            ```

            This will take the


            You can also use the query names as the variable in the formula.'
          items:
            $ref: '#/components/schemas/InsightFormula'
        metadata:
          description: This is the metadata for the insight.
          allOf:
          - $ref: '#/components/schemas/BarInsightMetadata'
        timeRange:
          $ref: '#/components/schemas/InsightTimeRangeWithStep'
        groupBy:
          type: string
          description: 'This is the group by column for the insight when table is `call`.

            These are the columns to group the results by.

            All results are grouped by the time range step by default.'
          example:
          - assistant_id
          enum:
          - assistantId
          - workflowId
          - squadId
          - phoneNumberId
          - type
          - endedReason
          - customerNumber
          - campaignId
          - artifact.structuredOutputs[OutputID]
        queries:
          type: array
          description: These are the queries to run to generate the insight.
          items:
            oneOf:
            - $ref: '#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn'
              title: JSONQueryOnCallTableWithStringTypeColumn
            - $ref: '#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn'
              title: JSONQueryOnCallTableWithNumberTypeColumn
            - $ref: '#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn'
              title: JSONQueryOnCallTableWithStructuredOutputColumn
            - $ref: '#/components/schemas/JSONQueryOnEventsTable'
              title: JSONQueryOnEventsTable
    FilterDateTypeColumnOnCallTable:
      type: object
      properties:
        column:
          type: string
          description: 'This is the column in the call table that will be filtered on.

            Date Type columns are columns where the rows store data as a date.

            Must be a valid column for the selected table.'
          example: created_at
          enum:
          - startedAt
          - endedAt
        operator:
          type: string
          description: 'This is the operator to use for the filter.

            For date type columns, the operator must be "=", ">", "<", ">=", "<="'
          example: '"=" or ">" or "<" or ">=" or "<="'
          enum:
          - '='
          - '!='
          - '>'
          - <
          - '>='
          - <=
        value:
          type: string
          description: 'This is the value to filter on.

            Must be a valid ISO 8601 date-time string.'
          example: '2025-01-01T00:00:00Z'
      required:
      - column
      - operator
      - value
    UpdatePieInsightFromCallTableDTO:
      type: object
      properties:
        name:
          type: string
          description: This is the name of the Insight.
          minLength: 1
          maxLength: 255
        type:
          type: string
          description: 'This is the type of the Insight.

            It is required to be `pie` to create a pie insight.'
          enum:
          - pie
        formulas:
          type: array
          description: 'Formulas are mathematical expressions applied on the data returned by the queries to transform them before being used to create the insight.

            The formulas needs to be a valid mathematical expre

# --- truncated at 32 KB (76 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vapi-ai/refs/heads/main/openapi/vapi-ai-insight-api-openapi.yml