> ## Documentation Index
> Fetch the complete documentation index at: https://docs.textql.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Playbooks



## OpenAPI

````yaml api-reference/speakeasy/textql-api-with-code-samples.yaml POST /textql.rpc.public.playbook.PlaybookService/GetPlaybooks
openapi: 3.1.0
info:
  title: TextQL API
  version: 1.0.0
  description: |
    TextQL public API. Generated from protobuf service definitions; internal
    endpoints are excluded via google.api.visibility / file_visibility.
servers:
  - url: https://app.textql.com
security:
  - apiKey: []
tags:
  - name: DashboardService
  - name: AppService
    description: |-
      AppService manages data apps: the generative app execution primitive.
       An app is agent-authored single-file HTML/JS/CSS executing in a CSP sandbox,
       fed a snapshot of its declared data sources. First-class resource, not a dashboard.
  - name: ConnectorService
  - name: PowerBIService
  - name: TableauService
  - name: DatasetService
  - name: OntologyManagementService
  - name: ChatService
  - name: AgentService
  - name: AuditLogService
  - name: MCPService
  - name: MetricsExportService
  - name: ObservabilityService
  - name: PlaybookService
  - name: RBACService
    description: RBAC service for managing roles, permissions, and access control
  - name: SandboxAdminService
  - name: SandboxQueryService
  - name: SandboxCapabilityService
  - name: ScimService
  - name: SecretService
  - name: SlackService
  - name: TeamsService
paths:
  /textql.rpc.public.playbook.PlaybookService/GetPlaybooks:
    post:
      tags:
        - PlaybookService
      summary: GetPlaybooks
      operationId: PlaybookService_GetPlaybooks
      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.playbook.GetPlaybooksRequest
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/textql.rpc.public.playbook.GetPlaybooksResponse
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
      x-codeSamples:
        - lang: python
          label: Python (SDK)
          source: |-
            import os
            from textql_sdk import Textql


            with Textql(
                api_key=os.getenv("TEXTQL_API_KEY", ""),
            ) as textql:

                res = textql.playbooks.get()

                # Handle response
                print(res)
        - lang: typescript
          label: TypeScript (SDK)
          source: |-
            import { Textql } from "@textql/sdk";

            const textql = new Textql({
              apiKey: process.env["TEXTQL_API_KEY"] ?? "",
            });

            async function run() {
              const result = await textql.playbooks.get({
                body: {},
              });

              console.log(result);
            }

            run();
components:
  schemas:
    connect-protocol-version:
      type: number
      title: Connect-Protocol-Version
      enum:
        - 1
      description: Define the version of the Connect protocol
      const: 1
      default: 1
    connect-timeout-header:
      type: number
      title: Connect-Timeout-Ms
      description: Define the timeout, in ms
    textql.rpc.public.playbook.GetPlaybooksRequest:
      type: object
      properties:
        memberOnly:
          type: boolean
          title: member_only
        limit:
          type: integer
          title: limit
          format: int32
        offset:
          type: integer
          title: offset
          format: int32
        searchTerm:
          type: string
          title: search_term
          nullable: true
        statusFilter:
          $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookStatus'
          title: status_filter
          description: single-select; superseded by `statuses` when that is non-empty
          nullable: true
        creatorMemberId:
          type: string
          title: creator_member_id
          description: >-
            single-select; superseded by `creator_member_ids` when that is
            non-empty
          nullable: true
        sortBy:
          $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookSortField'
          title: sort_by
        sortDirection:
          $ref: '#/components/schemas/textql.rpc.public.common.SortDirection'
          title: sort_direction
        subscribedFirst:
          type: boolean
          title: subscribed_first
          nullable: true
        onlySubscribed:
          type: boolean
          title: only_subscribed
          nullable: true
        sharedWithMe:
          type: boolean
          title: shared_with_me
          nullable: true
        includeSharedDrafts:
          type: boolean
          title: include_shared_drafts
          nullable: true
        statuses:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookStatus'
          title: statuses
          description: >-
            Multi-select filters (union). Each supersedes its single-value
            counterpart when non-empty.
        creatorMemberIds:
          type: array
          items:
            type: string
          title: creator_member_ids
      title: GetPlaybooksRequest
      additionalProperties: false
    textql.rpc.public.playbook.GetPlaybooksResponse:
      type: object
      properties:
        playbooks:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.playbook.Playbook'
          title: playbooks
        totalCount:
          type: integer
          title: total_count
          format: int32
      title: GetPlaybooksResponse
      additionalProperties: false
    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
    textql.rpc.public.playbook.PlaybookStatus:
      type: string
      title: PlaybookStatus
      enum:
        - STATUS_UNKNOWN
        - STATUS_ACTIVE
        - STATUS_INACTIVE
        - STATUS_EMPTY
        - ALL_PLAYBOOKS
    textql.rpc.public.playbook.PlaybookSortField:
      type: string
      title: PlaybookSortField
      enum:
        - SORT_FIELD_UNKNOWN
        - SORT_FIELD_NAME
        - SORT_FIELD_CREATED_AT
        - SORT_FIELD_UPDATED_AT
        - SORT_FIELD_SCHEDULE
    textql.rpc.public.common.SortDirection:
      type: string
      title: SortDirection
      enum:
        - SORT_DIRECTION_UNKNOWN
        - SORT_DIRECTION_ASC
        - SORT_DIRECTION_DESC
      description: Common enum for sort direction used across multiple services
    textql.rpc.public.playbook.Playbook:
      type: object
      properties:
        id:
          type: string
          title: id
          description: UUID
        orgId:
          type: string
          title: org_id
        memberId:
          type: string
          title: member_id
          nullable: true
        connectorId:
          type: integer
          title: connector_id
          format: int32
          description: 'Deprecated: use connector_ids instead'
          nullable: true
          deprecated: true
        name:
          type: string
          title: name
        prompt:
          type: string
          title: prompt
        createdAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          title: created_at
        updatedAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          title: updated_at
        status:
          $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookStatus'
          title: status
        triggerType:
          $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookTriggerType'
          title: trigger_type
        cronString:
          type: string
          title: cron_string
          nullable: true
        datasetIds:
          type: array
          items:
            type: string
          title: dataset_ids
          description: List of UUIDs
        referenceReportId:
          type: string
          title: reference_report_id
          nullable: true
        latestChatId:
          type: string
          title: latest_chat_id
          nullable: true
        emailAddresses:
          type: array
          items:
            type: string
          title: email_addresses
        slackChannelId:
          type: string
          title: slack_channel_id
          nullable: true
        taggedSlackUserIds:
          type: array
          items:
            type: string
          title: tagged_slack_user_ids
        llmModel:
          $ref: '#/components/schemas/textql.rpc.public.chat.LlmModel'
          title: llm_model
          nullable: true
        paradigmOptions:
          $ref: '#/components/schemas/textql.rpc.public.paradigm.ParadigmOptions'
          title: paradigm_options
        paradigmType:
          $ref: '#/components/schemas/textql.rpc.paradigm_params.ParadigmType'
          title: paradigm_type
        isRunning:
          type: boolean
          title: is_running
          nullable: true
        owner:
          $ref: '#/components/schemas/textql.rpc.identity.MemberPreview'
          title: owner
          nullable: true
        hasWritePermission:
          type: boolean
          title: has_write_permission
          nullable: true
        isSubscribed:
          type: boolean
          title: is_subscribed
          nullable: true
        reportOutputStyle:
          $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookReportStyle'
          title: report_output_style
          description: Report output length
        templateHeaderId:
          type: string
          title: template_header_id
          description: UUID reference to PlaybookTemplateHeader
          nullable: true
        selectedTemplateDataIds:
          type: array
          items:
            type: string
          title: selected_template_data_ids
          description: List of UUIDs for selected template data rows
        maxConcurrentTemplates:
          type: integer
          title: max_concurrent_templates
          format: int32
          description: Maximum number of templates to run concurrently
          nullable: true
        autoOptimizeConcurrency:
          type: boolean
          title: auto_optimize_concurrency
          description: Auto-optimize concurrency based on runtime
          nullable: true
        connectorIds:
          type: array
          items:
            type: integer
            format: int32
          title: connector_ids
        templateDataFilters:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.playbook.FilterCondition'
          title: template_data_filters
          description: Filter conditions for template data
        parentPlaybookId:
          type: string
          title: parent_playbook_id
          nullable: true
        originPlaybookId:
          type: string
          title: origin_playbook_id
          nullable: true
        duplicatedByMemberId:
          type: string
          title: duplicated_by_member_id
          nullable: true
        duplicatedAt:
          $ref: '#/components/schemas/google.protobuf.Timestamp'
          title: duplicated_at
          nullable: true
        chatAccessMode:
          $ref: '#/components/schemas/textql.rpc.public.playbook.ChatAccessMode'
          title: chat_access_mode
        chatAccessOverrides:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.playbook.ChatAccessOverride'
          title: chat_access_overrides
        chatIsPublic:
          type: boolean
          title: chat_is_public
        dashboardIds:
          type: array
          items:
            type: string
          title: dashboard_ids
          description: List of dashboard UUIDs attached to this playbook
        recipientEmailColumn:
          type: string
          title: recipient_email_column
          description: Column name in template data to use as recipient email override
          nullable: true
        teamsChannelId:
          type: string
          title: teams_channel_id
          nullable: true
        taggedTeamsUserAadIds:
          type: array
          items:
            type: string
          title: tagged_teams_user_aad_ids
        configSource:
          $ref: '#/components/schemas/textql.rpc.public.config_source.ConfigSource'
          title: config_source
          description: >-
            present ⇒ config-managed (defined by a Library file; config-owned
            fields read-only in UI)
          nullable: true
        apiAccessKeyIds:
          type: array
          items:
            type: string
          title: api_access_key_ids
      title: Playbook
      additionalProperties: false
    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.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.
    textql.rpc.public.playbook.PlaybookTriggerType:
      type: string
      title: PlaybookTriggerType
      enum:
        - TRIGGER_TYPE_UNKNOWN
        - TRIGGER_TYPE_CRON
        - TRIGGER_TYPE_WEBHOOK
    textql.rpc.public.chat.LlmModel:
      type: string
      title: LlmModel
      enum:
        - MODEL_UNKNOWN
        - MODEL_DEFAULT_SMALL
        - MODEL_DEFAULT
        - MODEL_DEFAULT_LARGE
        - MODEL_DEFAULT_REASONING
        - MODEL_HAIKU_4_5
        - MODEL_OPUS_4_8
        - MODEL_FABLE_5
        - MODEL_SONNET_5
        - MODEL_GPT_5_6_SOL
        - MODEL_GEMINI_3_FLASH
        - MODEL_GEMINI_3_PRO
        - MODEL_GEMINI_3_1_PRO
        - MODEL_GEMINI_3_5_FLASH
        - MODEL_GPT_5_6_TERRA
        - MODEL_GPT_5_6_LUNA
        - MODEL_DEEPSEEK_3_2
        - MODEL_GLM_5
        - MODEL_VLLM
        - MODEL_KIMI_K2_6
        - MODEL_GLM_5_2
        - MODEL_KIMI_K2_7_CODE
        - MODEL_QWEN3_7_PLUS
        - MODEL_MUSE_SPARK_1_1
    textql.rpc.public.paradigm.ParadigmOptions:
      type: object
      oneOf:
        - type: object
          properties:
            universal:
              $ref: '#/components/schemas/textql.rpc.public.paradigm.UniversalOptions'
              title: universal
          title: universal
          required:
            - universal
      title: ParadigmOptions
      additionalProperties: false
    textql.rpc.paradigm_params.ParadigmType:
      type: string
      title: ParadigmType
      enum:
        - TYPE_UNKNOWN
        - TYPE_UNIVERSAL
    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.public.playbook.PlaybookReportStyle:
      type: string
      title: PlaybookReportStyle
      enum:
        - REPORT_STYLE_UNKNOWN
        - EXECUTIVE_REPORT
        - VERBOSE
        - CONCISE
    textql.rpc.public.playbook.FilterCondition:
      type: object
      properties:
        field:
          type: string
          title: field
          description: JSON field name
        operator:
          type: string
          title: operator
          description: >-
            "equals", "contains", "starts_with", "ends_with", "gt", "gte", "lt",
            "lte"
        value:
          type: string
          title: value
          description: Value to filter by
      title: FilterCondition
      additionalProperties: false
      description: Filter condition for template data searches
    textql.rpc.public.playbook.ChatAccessMode:
      type: string
      title: ChatAccessMode
      enum:
        - CHAT_ACCESS_MODE_INHERIT
        - CHAT_ACCESS_MODE_CUSTOM
    textql.rpc.public.playbook.ChatAccessOverride:
      type: object
      properties:
        memberId:
          type: string
          title: member_id
          nullable: true
        roleId:
          type: string
          title: role_id
          nullable: true
        accessType:
          type: string
          title: access_type
          description: '"owner", "editor", "viewer"'
      title: ChatAccessOverride
      additionalProperties: false
    textql.rpc.public.config_source.ConfigSource:
      type: object
      properties:
        filePath:
          type: string
          title: file_path
          description: Library file that defines the object
        syncStatus:
          $ref: >-
            #/components/schemas/textql.rpc.public.config_source.ConfigSyncStatus
          title: sync_status
        syncError:
          type: string
          title: sync_error
          description: set only when sync_status = ERROR
          nullable: true
        breakingPatchId:
          type: string
          title: breaking_patch_id
          description: patch that drove it to ERROR (Quick Revert target)
          nullable: true
      title: ConfigSource
      additionalProperties: false
      description: >-
        Config-management metadata (provenance + reconcile state) for any
        file-based
         object. Presence on an object ⇒ the object is config-managed.
    textql.rpc.public.paradigm.UniversalOptions:
      type: object
      properties:
        connectorIds:
          type: array
          items:
            type: integer
            format: int32
          title: connector_ids
        datasetId:
          type: string
          title: dataset_id
          nullable: true
        webSearchEnabled:
          type: boolean
          title: web_search_enabled
        sqlEnabled:
          type: boolean
          title: sql_enabled
        ontologyEnabled:
          type: boolean
          title: ontology_enabled
        ontologyEditingEnabled:
          type: boolean
          title: ontology_editing_enabled
        pythonEnabled:
          type: boolean
          title: python_enabled
        autoApproveEnabled:
          type: boolean
          title: auto_approve_enabled
        googleDriveEnabled:
          type: boolean
          title: google_drive_enabled
        powerbiEnabled:
          type: boolean
          title: powerbi_enabled
        contextEditingEnabled:
          type: boolean
          title: context_editing_enabled
        formEditorEnabled:
          type: boolean
          title: form_editor_enabled
        playbookToolsEnabled:
          type: boolean
          title: playbook_tools_enabled
        microsoft365Enabled:
          type: boolean
          title: microsoft365_enabled
        feedExplorerEnabled:
          type: boolean
          title: feed_explorer_enabled
        bashEnabled:
          type: boolean
          title: bash_enabled
        javascriptEnabled:
          type: boolean
          title: javascript_enabled
        feedPostEnabled:
          type: boolean
          title: feed_post_enabled
        feedCommentEnabled:
          type: boolean
          title: feed_comment_enabled
        feedEngageEnabled:
          type: boolean
          title: feed_engage_enabled
        streamlitEnabled:
          type: boolean
          title: streamlit_enabled
        compactionDisabled:
          type: boolean
          title: compaction_disabled
        gmailEnabled:
          type: boolean
          title: gmail_enabled
        chatHistorySearchEnabled:
          type: boolean
          title: chat_history_search_enabled
        googleCalendarEnabled:
          type: boolean
          title: google_calendar_enabled
        emailOutputEnabled:
          type: boolean
          title: email_output_enabled
        powerbiSelections:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.powerbi_selection.PowerBISelection'
          title: powerbi_selections
        smsMode:
          type: boolean
          title: sms_mode
        apiAccessKeyIds:
          type: array
          items:
            type: string
          title: api_access_key_ids
      title: UniversalOptions
      additionalProperties: false
    textql.rpc.public.config_source.ConfigSyncStatus:
      type: string
      title: ConfigSyncStatus
      enum:
        - CONFIG_SYNC_STATUS_UNSPECIFIED
        - CONFIG_SYNC_STATUS_SYNCING
        - CONFIG_SYNC_STATUS_SYNCED
        - CONFIG_SYNC_STATUS_ERROR
    textql.rpc.powerbi_selection.PowerBISelection:
      type: object
      properties:
        workspaceId:
          type: string
          title: workspace_id
        reportIds:
          type: array
          items:
            type: string
          title: report_ids
        datasetIds:
          type: array
          items:
            type: string
          title: dataset_ids
        workspaceName:
          type: string
          title: workspace_name
        connectorId:
          type: integer
          title: connector_id
          format: int32
      title: PowerBISelection
      additionalProperties: false
      description: |-
        PowerBISelection captures a chosen PowerBI workspace (and optionally the
         specific reports/datasets within it) for attaching to a chat. Field shape
         mirrors textql.rpc.public.paradigm.PowerBISelection; kept in a standalone
         package so it can be shared by paradigm_params without an import cycle
         (public/paradigm.proto already imports paradigm_params.proto).
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: tql_api_key

````