TextQL Platform API (v1)

The first-generation TextQL Platform API, exposed as Connect-RPC over HTTP POST. Documented as deprecated in favour of the v2 REST API but still published and served. Covers chat execution and streaming, playbook lifecycle, agent webhooks, connector listing, the Python sandbox, and outbound API access keys for external providers.

Operations 4

POST /v1/chat/cancel CancelStream #
POST /v1/chat Chat #
POST /v1/chat/get GetChat #
POST /v1/chat/list ListChats #

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for apis

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

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/textql-platform-api-v1"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

Free tier, no email required.

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

OpenAPI Specification

textql-chat-v1-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: textql.rpc.platform
  version: "1.0"
paths:
  /v1/chat/cancel:
    post:
      tags:
        - textql.rpc.platform.ChatService
      summary: CancelStream
      operationId: textql.rpc.platform.ChatService.CancelStream
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.chat.CancelStreamRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.chat.CancelStreamResponse'
  /v1/chat:
    post:
      tags:
        - textql.rpc.platform.ChatService
      summary: Chat
      operationId: textql.rpc.platform.ChatService.Chat
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.platform.ChatRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.platform.ChatResponse'
  /v1/chat/get:
    post:
      tags:
        - textql.rpc.platform.ChatService
      summary: GetChat
      operationId: textql.rpc.platform.ChatService.GetChat
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.chat.GetChatRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.chat.GetChatResponse'
  /v1/chat/stream: {}
  /v1/chat/list:
    post:
      tags:
        - textql.rpc.platform.ChatService
      summary: ListChats
      operationId: textql.rpc.platform.ChatService.ListChats
      description: List chats with optional filtering and pagination. Uses Connect-RPC protocol.
      parameters:
        - name: Connect-Protocol-Version
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/connect-protocol-version'
        - name: Connect-Timeout-Ms
          in: header
          schema:
            $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/textql.rpc.public.chat.GetChatsRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/textql.rpc.public.chat.GetChatsResponse'
components:
  schemas:
    connect-protocol-version:
      type: number
      title: Connect-Protocol-Version
      enum:
        - 1
      description: Define the version of the Connect protocol
      const: 1
    connect-timeout-header:
      type: number
      title: Connect-Timeout-Ms
      description: Define the timeout, in ms
    connect.error:
      type: object
      properties:
        code:
          type: string
          examples:
            - not_found
          enum:
            - canceled
            - unknown
            - invalid_argument
            - deadline_exceeded
            - not_found
            - already_exists
            - permission_denied
            - resource_exhausted
            - failed_precondition
            - aborted
            - out_of_range
            - unimplemented
            - internal
            - unavailable
            - data_loss
            - unauthenticated
          description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
        message:
          type: string
          description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
        details:
          type: array
          items:
            $ref: '#/components/schemas/connect.error_details.Any'
          description: A list of messages that carry the error details. There is no limit on the number of messages.
      title: Connect Error
      additionalProperties: true
      description: 'Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation'
    connect.error_details.Any:
      type: object
      properties:
        type:
          type: string
          description: 'A URL that acts as a globally unique identifier for the type of the serialized message. For example: `type.googleapis.com/google.rpc.ErrorInfo`. This is used to determine the schema of the data in the `value` field and is the discriminator for the `debug` field.'
        value:
          type: string
          format: binary
          description: The Protobuf message, serialized as bytes and base64-encoded. The specific message type is identified by the `type` field.
        debug:
          oneOf:
            - type: object
              title: Any
              additionalProperties: true
              description: Detailed error information.
          discriminator:
            propertyName: type
          title: Debug
          description: Deserialized error detail payload. The 'type' field indicates the schema. This field is for easier debugging and should not be relied upon for application logic.
      additionalProperties: true
      description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message, with an additional debug field for ConnectRPC error details.
    google.protobuf.ListValue:
      type: object
      properties:
        values:
          type: array
          items:
            $ref: '#/components/schemas/google.protobuf.Value'
          title: values
          description: Repeated field of dynamically typed values.
      title: ListValue
      additionalProperties: false
      description: |-
        `ListValue` is a wrapper around a repeated field of values.

         The JSON representation for `ListValue` is JSON array.
    google.protobuf.NullValue:
      type: string
      title: NullValue
      enum:
        - NULL_VALUE
      description: |-
        `NullValue` is a singleton enumeration to represent the null value for the
         `Value` type union.

         The JSON representation for `NullValue` is JSON `null`.
    google.protobuf.Struct:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/google.protobuf.Value'
      description: |-
        `Struct` represents a structured data value, consisting of fields
         which map to dynamically typed values. In some languages, `Struct`
         might be supported by a native representation. For example, in
         scripting languages like JS a struct is represented as an
         object. The details of that representation are described together
         with the proto support for the language.

         The JSON representation for `Struct` is JSON object.
    google.protobuf.Struct.FieldsEntry:
      type: object
      properties:
        key:
          type: string
          title: key
        value:
          title: value
          $ref: '#/components/schemas/google.protobuf.Value'
      title: FieldsEntry
      additionalProperties: false
    google.protobuf.Timestamp:
      type: string
      examples:
        - "2023-01-15T01:30:15.01Z"
        - "2024-12-25T12:00:00Z"
      format: date-time
      description: |-
        A Timestamp represents a point in time independent of any time zone or local
         calendar, encoded as a count of seconds and fractions of seconds at
         nanosecond resolution. The count is relative to an epoch at UTC midnight on
         January 1, 1970, in the proleptic Gregorian calendar which extends the
         Gregorian calendar backwards to year one.

         All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
         second table is needed for interpretation, using a [24-hour linear
         smear](https://developers.google.com/time/smear).

         The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
         restricting to that range, we ensure that we can convert to and from [RFC
         3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.

         # Examples

         Example 1: Compute Timestamp from POSIX `time()`.

             Timestamp timestamp;
             timestamp.set_seconds(time(NULL));
             timestamp.set_nanos(0);

         Example 2: Compute Timestamp from POSIX `gettimeofday()`.

             struct timeval tv;
             gettimeofday(&tv, NULL);

             Timestamp timestamp;
             timestamp.set_seconds(tv.tv_sec);
             timestamp.set_nanos(tv.tv_usec * 1000);

         Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.

             FILETIME ft;
             GetSystemTimeAsFileTime(&ft);
             UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;

             // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
             // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
             Timestamp timestamp;
             timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
             timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));

         Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.

             long millis = System.currentTimeMillis();

             Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
                 .setNanos((int) ((millis % 1000) * 1000000)).build();

         Example 5: Compute Timestamp from Java `Instant.now()`.

             Instant now = Instant.now();

             Timestamp timestamp =
                 Timestamp.newBuilder().setSeconds(now.getEpochSecond())
                     .setNanos(now.getNano()).build();

         Example 6: Compute Timestamp from current time in Python.

             timestamp = Timestamp()
             timestamp.GetCurrentTime()

         # JSON Mapping

         In JSON format, the Timestamp type is encoded as a string in the
         [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
         format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
         where {year} is always expressed using four digits while {month}, {day},
         {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
         seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
         are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
         is required. A proto3 JSON serializer should always use UTC (as indicated by
         "Z") when printing the Timestamp type and a proto3 JSON parser should be
         able to accept both UTC and other timezones (as indicated by an offset).

         For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
         01:30 UTC on January 15, 2017.

         In JavaScript, one can convert a Date object to this format using the
         standard
         [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
         method. In Python, a standard `datetime.datetime` object can be converted
         to this format using
         [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
         the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
         the Joda Time's [`ISODateTimeFormat.dateTime()`](
         http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
         ) to obtain a formatter capable of generating timestamps in this format.
    google.protobuf.Value:
      oneOf:
        - type: "null"
        - type: number
        - type: string
        - type: boolean
        - type: array
        - type: object
          additionalProperties: true
      description: |-
        `Value` represents a dynamically typed value which can be either
         null, a number, a string, a boolean, a recursive struct value, or a
         list of values. A producer of value is expected to set one of these
         variants. Absence of any variant indicates an error.

         The JSON representation for `Value` is JSON value.
    textql.rpc.identity.MemberPreview:
      type: object
      properties:
        memberId:
          type: string
          title: member_id
        memberEmail:
          type: string
          title: member_email
          description: |-
            the fields are optionally populated, depending on the context
             may require RPC fields such as `include_owner` to be set to true
          nullable: true
        memberName:
          type: string
          title: member_name
          nullable: true
        memberPictureUrl:
          type: string
          title: member_picture_url
          nullable: true
      title: MemberPreview
      additionalProperties: false
    textql.rpc.paradigm_params.ParadigmType:
      type: string
      title: ParadigmType
      enum:
        - TYPE_UNKNOWN
        - TYPE_SQL
        - TYPE_RESEARCH
        - TYPE_ONTOLOGY
        - TYPE_BASIC
        - TYPE_TABLEAU
        - TYPE_EXPERIMENTAL
        - TYPE_UNIVERSAL
        - TYPE_PUBLIC_DEMO
    textql.rpc.platform.ChatRequest:
      type: object
      properties:
        question:
          type: string
          title: question
          minLength: 3
        chatId:
          type: string
          title: chat_id
          nullable: true
        tools:
          title: tools
          nullable: true
          $ref: '#/components/schemas/textql.rpc.platform.ChatTools'
      title: ChatRequest
      additionalProperties: false
    textql.rpc.platform.ChatResponse:
      type: object
      properties:
        id:
          type: string
          title: id
          minLength: 1
        createdAt:
          title: created_at
          $ref: '#/components/schemas/google.protobuf.Timestamp'
        error:
          type: string
          title: error
          nullable: true
        model:
          type: string
          title: model
          minLength: 1
        response:
          type: string
          title: response
        chatId:
          type: string
          title: chat_id
          minLength: 1
        assets:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.cells.PreviewCell'
          title: assets
      title: ChatResponse
      additionalProperties: false
    textql.rpc.platform.ChatStatus:
      type: string
      title: ChatStatus
      enum:
        - QUERY_STATUS_UNKNOWN
        - QUERY_STATUS_COMPLETED
        - QUERY_STATUS_FAILED
        - QUERY_STATUS_CANCELLED
        - QUERY_STATUS_IN_PROGRESS
    textql.rpc.platform.ChatTools:
      type: object
      properties:
        connectorIds:
          type: array
          items:
            type: integer
            format: int32
          title: connector_ids
        webSearchEnabled:
          type: boolean
          title: web_search_enabled
        sqlEnabled:
          type: boolean
          title: sql_enabled
        ontologyEnabled:
          type: boolean
          title: ontology_enabled
        experimentalEnabled:
          type: boolean
          title: experimental_enabled
        tableauEnabled:
          type: boolean
          title: tableau_enabled
        autoApproveEnabled:
          type: boolean
          title: auto_approve_enabled
        pythonEnabled:
          type: boolean
          title: python_enabled
        googleDriveEnabled:
          type: boolean
          title: google_drive_enabled
        powerbiEnabled:
          type: boolean
          title: powerbi_enabled
      title: ChatTools
      additionalProperties: false
    textql.rpc.platform.ChatUsage:
      type: object
      properties:
        inputTokens:
          type:
            - integer
            - string
          title: input_tokens
          minimum: 0
          format: int64
        cacheCreationInputTokens:
          type:
            - integer
            - string
          title: cache_creation_input_tokens
          minimum: 0
          format: int64
        cacheReadInputTokens:
          type:
            - integer
            - string
          title: cache_read_input_tokens
          minimum: 0
          format: int64
        outputTokens:
          type:
            - integer
            - string
          title: output_tokens
          minimum: 0
          format: int64
        reasoningTokens:
          type:
            - integer
            - string
          title: reasoning_tokens
          minimum: 0
          format: int64
        totalTokens:
          type:
            - integer
            - string
          title: total_tokens
          minimum: 0
          format: int64
        contextWindowUsed:
          type: number
          title: context_window_used
          maximum: 1
          minimum: 0
          format: double
      title: ChatUsage
      additionalProperties: false
    textql.rpc.platform.StopReason:
      type: string
      title: StopReason
      enum:
        - STOP_REASON_UNKNOWN
        - STOP_REASON_END_TURN
        - STOP_REASON_MAX_TOKENS
        - STOP_REASON_TOOL_USE
        - STOP_REASON_STOP_SEQUENCE
        - STOP_REASON_REFUSAL
    textql.rpc.platform.StreamChatMetadata:
      type: object
      properties:
        id:
          type: string
          title: id
          minLength: 1
        createdAt:
          title: created_at
          $ref: '#/components/schemas/google.protobuf.Timestamp'
        model:
          type: string
          title: model
          minLength: 1
        chatId:
          type: string
          title: chat_id
          minLength: 1
        metadata:
          type: object
          title: metadata
          additionalProperties:
            type: string
            title: value
        isContinuation:
          type: boolean
          title: is_continuation
        usage:
          title: usage
          $ref: '#/components/schemas/textql.rpc.platform.ChatUsage'
        status:
          title: status
          $ref: '#/components/schemas/textql.rpc.platform.ChatStatus'
        error:
          type: string
          title: error
          nullable: true
      title: StreamChatMetadata
      additionalProperties: false
    textql.rpc.platform.StreamChatMetadata.MetadataEntry:
      type: object
      properties:
        key:
          type: string
          title: key
        value:
          type: string
          title: value
      title: MetadataEntry
      additionalProperties: false
    textql.rpc.platform.StreamRequest:
      type: object
      properties:
        question:
          type: string
          title: question
          minLength: 3
        chatId:
          type: string
          title: chat_id
          minLength: 1
          nullable: true
        tools:
          title: tools
          nullable: true
          $ref: '#/components/schemas/textql.rpc.platform.ChatTools'
      title: StreamRequest
      additionalProperties: false
    textql.rpc.platform.StreamResponse:
      type: object
      oneOf:
        - properties:
            cell:
              title: cell
              $ref: '#/components/schemas/textql.rpc.public.chat.Cell'
          title: cell
          required:
            - cell
        - properties:
            metadata:
              title: metadata
              $ref: '#/components/schemas/textql.rpc.platform.StreamChatMetadata'
          title: metadata
          required:
            - metadata
        - properties:
            preview:
              title: preview
              $ref: '#/components/schemas/textql.rpc.public.cells.PreviewCell'
          title: preview
          required:
            - preview
        - properties:
            text:
              type: string
              title: text
          title: text
          required:
            - text
      title: StreamResponse
      additionalProperties: false
    textql.rpc.public.cells.AnswerCell:
      type: object
      properties:
        content:
          type: string
          title: content
        images:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.cells.ImageReference'
          title: images
        sql:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.cells.SQLReference'
          title: sql
      title: AnswerCell
      additionalProperties: false
    textql.rpc.public.cells.BashCell:
      type: object
      properties:
        script:
          type: string
          title: script
        stdout:
          type: string
          title: stdout
        stderr:
          type: string
          title: stderr
        exitCode:
          type: integer
          title: exit_code
          format: int32
      title: BashCell
      additionalProperties: false
    textql.rpc.public.cells.ConnectorRef:
      type: object
      properties:
        id:
          type: integer
          title: id
          format: int32
        name:
          type: string
          title: name
        type:
          type: string
          title: type
      title: ConnectorRef
      additionalProperties: false
      description: Reference types for context data
    textql.rpc.public.cells.ContextPromptChangeStatus:
      type: string
      title: ContextPromptChangeStatus
      enum:
        - STATUS_UNKNOWN
        - STATUS_DRAFT
        - STATUS_PENDING
        - STATUS_REJECTED
        - STATUS_APPLIED
    textql.rpc.public.cells.ContextPromptEditorAction:
      type: string
      title: ContextPromptEditorAction
      enum:
        - ACTION_UNKNOWN
        - ACTION_GET
        - ACTION_PROPOSE
        - ACTION_CREATE
    textql.rpc.public.cells.ContextPromptEditorCell:
      type: object
      properties:
        action:
          title: action
          $ref: '#/components/schemas/textql.rpc.public.cells.ContextPromptEditorAction'
        currentContext:
          type: string
          title: current_context
          nullable: true
        proposedContext:
          type: string
          title: proposed_context
          nullable: true
        diff:
          type: string
          title: diff
          nullable: true
        status:
          title: status
          $ref: '#/components/schemas/textql.rpc.public.cells.ContextPromptChangeStatus'
        errorMessage:
          type: string
          title: error_message
          nullable: true
        contextId:
          type: string
          title: context_id
          nullable: true
      title: ContextPromptEditorCell
      additionalProperties: false
    textql.rpc.public.cells.DashboardAction:
      type: string
      title: DashboardAction
      enum:
        - DASHBOARD_ACTION_UNKNOWN
        - DASHBOARD_ACTION_CREATE
        - DASHBOARD_ACTION_UPDATE
        - DASHBOARD_ACTION_PUBLISH
    textql.rpc.public.cells.DashboardCell:
      type: object
      properties:
        name:
          type: string
          title: name
        dashboardId:
          type: string
          title: dashboard_id
        code:
          type: string
          title: code
        dataSources:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.dashboard.DataSource'
          title: data_sources
        errorMessage:
          type: string
          title: error_message
          nullable: true
        screenshotUrl:
          type: string
          title: screenshot_url
          nullable: true
        lastRunAt:
          type: string
          title: last_run_at
          nullable: true
        action:
          title: action
          $ref: '#/components/schemas/textql.rpc.public.cells.DashboardAction'
        type:
          type: string
          title: type
          description: 'Dashboard type: "streamlit" or "dash"'
          nullable: true
        updatedAt:
          title: updated_at
          description: Last update timestamp
          nullable: true
          $ref: '#/components/schemas/google.protobuf.Timestamp'
      title: DashboardCell
      additionalProperties: false
    textql.rpc.public.cells.DateRange:
      type: string
      title: DateRange
      enum:
        - RANGE_UNKNOWN
        - RANGE_ALL
        - RANGE_PAST_DAY
        - RANGE_PAST_WEEK
        - RANGE_PAST_MONTH
        - RANGE_PAST_YEAR
    textql.rpc.public.cells.DocumentCell:
      type: object
      properties:
        name:
          type: string
          title: name
        url:
          type: string
          title: url
        preview:
          type: string
          title: preview
        datasetSourceId:
          type: string
          title: dataset_source_id
        pageCount:
          type: integer
          title: page_count
          format: int32
      title: DocumentCell
      additionalProperties: false
    textql.rpc.public.cells.EditableForm:
      type: object
      properties:
        formName:
          type: string
          title: form_name
        fields:
          title: fields
          $ref: '#/components/schemas/google.protobuf.Struct'
        status:
          title: status
          $ref: '#/components/schemas/textql.rpc.public.cells.EditableFormStatus'
        id:
          type: string
          title: id
        submitError:
          type: string
          title: submit_error
          nullable: true
        submitResult:
          type: string
          title: submit_result
          nullable: true
        validationError:
          type: string
          title: validation_error
          nullable: true
      title: EditableForm
      additionalProperties: false
    textql.rpc.public.cells.EditableFormStatus:
      type: string
      title: EditableFormStatus
      enum:
        - EDITABLE_FORM_STATUS_UNKNOWN
        - EDITABLE_FORM_STATUS_DRAFT
        - EDITABLE_FORM_STATUS_MODIFIED
        - EDITABLE_FORM_STATUS_SUBMITTING
        - EDITABLE_FORM_STATUS_SUBMITTED
        - EDITABLE_FORM_STATUS_REJECTED
    textql.rpc.public.cells.ExaSearchResult:
      type: object
      properties:
        title:
          type: string
          title: title
        url:
          type: string
          title: url
        text:
          type: string
          title: text
        author:
          type: string
          title: author
        publishedDate:
          type: string
          title: published_date
        favicon:
          type: string
          title: favicon
        image:
          type: string
          title: image
        score:
          type: number
          title: score
          format: double
        highlights:
          type: array
          items:
            type: string
          title: highlights
        highlightScores:
          type: array
          items:
            type: number
            format: double
          title: highlight_scores
        summary:
          type: string
          title: summary
      title: ExaSearchResult
      additionalProperties: false
    textql.rpc.public.cells.FeedCommentCell:
      type: object
      properties:
        postId:
          type: string
          title: post_id
        content:
          type: string
          title: content
        commentId:
          type: string
          title: comment_id
        commentUrl:
          type: string
          title: comment_url
        timestamp:
          type: string
          title: timestamp
        error:
          type: string
          title: error
      title: FeedCommentCell
      additionalProperties: false
    textql.rpc.public.cells.FeedEngageCell:
      type: object
      properties:
        thingId:
          type: string
          title: thing_id
        voteType:
          type: string
          title: vote_type
        upvoteCount:
          type: integer
          title: upvote_count
          format: int32
        downvoteCount:
          type: integer
          title: downvote_count
          format: int32
        timestamp:
          type: string
          title: timestamp
        error:
          type: string
          title: error
      title: FeedEngageCell
      additionalProperties: false
    textql.rpc.public.cells.FeedExplorerCell:
      type: object
      properties:
        operation:
          type: string
          title: operation
          description: '"get_feed", "get_post", "get_comments"'
        postId:
          type: string
          title: post_id
          nullable: true
        filter:
          type: string
          title: filter
          nullable: true
        limit:
          type: integer
          title: limit
          format: int32
          nullable: true
        result:
          type: string
          title: result
          description: JSON-serialized result
      title: FeedExplorerCell
      additionalProperties: false
    textql.rpc.public.cells.FeedPostCell:
      type: object
      properties:
        title:
          type: string
          title: title
        content:
          type: string
          title: content
        imageUrls:
          type: array
          items:
            type: string
          title: image_urls
        dashboardIds:
          type: array
          items:
            type: string
          title: dashboard_ids
        reportIds:
          type: array
          items:
            type: string
          title: report_ids
        chatIds:
          type: array
          items:
            type: string
          title: chat_ids
        postId:
          type: string
          title: post_id
        postUrl:
          type: string
          title: post_url
        timestamp:
          type: string
          title: timestamp
        error:
          type: string
          title: error
      title: FeedPostCell
      additionalProperties: false
    textql.rpc.public.cells.FileReference:
      type: object
      properties:
        name:
          type: string
          title: name
        url:
          type: string
          title: url
        fileType:
          type: string
          title: file_type
      title: FileReference
      additionalProperties: false
    textql.rpc.public.cells.FormEditorAction:
      type: string
      title: FormEditorAction
      enum:
        - FORM_EDITOR_ACTION_UNKNOWN
        - FORM_EDITOR_ACTION_INFO
        - FORM_EDITOR_ACTION_VIEW
        - FORM_EDITOR_ACTION_CREATE
        - FORM_EDITOR_ACTION_UPDATE
    textql.rpc.public.cells.FormEditorCell:
      type: object
      properties:
        action:
          title: action
          $ref: '#/components/schemas/textql.rpc.public.cells.FormEditorActio

# --- truncated at 32 KB (121 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/textql/refs/heads/main/openapi/textql-chat-v1-openapi.yml