openapi: 3.1.0 info: title: textql.rpc.platform version: "1.0" paths: /v1/playbooks/create: post: tags: - textql.rpc.platform.PlaybookService summary: CreatePlaybook operationId: textql.rpc.platform.PlaybookService.CreatePlaybook 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.CreatePlaybookRequest' 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.CreatePlaybookResponse' /v1/playbooks/delete: post: tags: - textql.rpc.platform.PlaybookService summary: DeletePlaybook operationId: textql.rpc.platform.PlaybookService.DeletePlaybook 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.DeletePlaybookRequest' 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.DeletePlaybookResponse' /v1/playbooks/deploy: post: tags: - textql.rpc.platform.PlaybookService summary: DeployPlaybook operationId: textql.rpc.platform.PlaybookService.DeployPlaybook 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.DeployPlaybookRequest' 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.DeployPlaybookResponse' /v1/playbooks/get: post: tags: - textql.rpc.platform.PlaybookService summary: GetPlaybook operationId: textql.rpc.platform.PlaybookService.GetPlaybook 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.GetPlaybookRequest' 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.GetPlaybookResponse' /v1/playbooks/list: post: tags: - textql.rpc.platform.PlaybookService summary: ListPlaybooks operationId: textql.rpc.platform.PlaybookService.ListPlaybooks 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.ListPlaybooksRequest' 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.ListPlaybooksResponse' /v1/playbooks/run: post: tags: - textql.rpc.platform.PlaybookService summary: RunPlaybook operationId: textql.rpc.platform.PlaybookService.RunPlaybook 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.RunPlaybookRequest' 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.RunPlaybookResponse' /v1/playbooks/update: post: tags: - textql.rpc.platform.PlaybookService summary: UpdatePlaybook operationId: textql.rpc.platform.PlaybookService.UpdatePlaybook 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.UpdatePlaybookRequest' 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.UpdatePlaybookResponse' 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.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.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.CreatePlaybookRequest: type: object title: CreatePlaybookRequest additionalProperties: false textql.rpc.platform.CreatePlaybookResponse: type: object properties: playbook: title: playbook $ref: '#/components/schemas/textql.rpc.public.playbook.Playbook' createdAt: title: created_at $ref: '#/components/schemas/google.protobuf.Timestamp' title: CreatePlaybookResponse additionalProperties: false textql.rpc.platform.DeletePlaybookRequest: type: object properties: playbookId: type: string title: playbook_id minLength: 1 title: DeletePlaybookRequest additionalProperties: false textql.rpc.platform.DeletePlaybookResponse: type: object properties: playbookId: type: string title: playbook_id deletedAt: title: deleted_at $ref: '#/components/schemas/google.protobuf.Timestamp' title: DeletePlaybookResponse additionalProperties: false textql.rpc.platform.DeployPlaybookRequest: type: object properties: playbookId: type: string title: playbook_id minLength: 1 title: DeployPlaybookRequest additionalProperties: false textql.rpc.platform.DeployPlaybookResponse: type: object properties: playbookId: type: string title: playbook_id deployedAt: title: deployed_at $ref: '#/components/schemas/google.protobuf.Timestamp' title: DeployPlaybookResponse additionalProperties: false textql.rpc.platform.GetPlaybookRequest: type: object properties: playbookId: type: string title: playbook_id minLength: 1 limit: type: integer title: limit minimum: 0 format: int32 offset: type: integer title: offset minimum: 0 format: int32 title: GetPlaybookRequest additionalProperties: false textql.rpc.platform.GetPlaybookResponse: type: object properties: playbook: title: playbook $ref: '#/components/schemas/textql.rpc.public.playbook.Playbook' reports: type: array items: $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookReport' title: reports totalReportsCount: type: integer title: total_reports_count format: int32 title: GetPlaybookResponse additionalProperties: false textql.rpc.platform.ListPlaybooksRequest: type: object properties: memberOnly: type: boolean title: member_only limit: type: integer title: limit maximum: 100 minimum: 0 format: int32 offset: type: integer title: offset minimum: 0 format: int32 searchTerm: type: string title: search_term nullable: true statusFilter: title: status_filter nullable: true $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookStatus' creatorMemberId: type: string title: creator_member_id nullable: true sortBy: title: sort_by $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookSortField' sortDirection: title: sort_direction $ref: '#/components/schemas/textql.rpc.public.common.SortDirection' subscribedFirst: type: boolean title: subscribed_first nullable: true title: ListPlaybooksRequest additionalProperties: false textql.rpc.platform.ListPlaybooksResponse: 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: ListPlaybooksResponse additionalProperties: false textql.rpc.platform.RunPlaybookRequest: type: object properties: playbookId: type: string title: playbook_id minLength: 1 dryRun: type: boolean title: dry_run templateId: type: string title: template_id nullable: true title: RunPlaybookRequest additionalProperties: false textql.rpc.platform.RunPlaybookResponse: type: object properties: chatId: type: string title: chat_id report: title: report $ref: '#/components/schemas/textql.rpc.public.cells.ReportCell' assets: type: array items: $ref: '#/components/schemas/textql.rpc.public.cells.PreviewCell' title: assets title: RunPlaybookResponse additionalProperties: false textql.rpc.platform.UpdatePlaybookRequest: type: object properties: playbookId: type: string title: playbook_id minLength: 1 name: type: string title: name nullable: true prompt: type: string title: prompt nullable: true status: title: status nullable: true $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookStatus' triggerType: title: trigger_type nullable: true $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookTriggerType' cronString: type: string title: cron_string nullable: true datasetIds: type: array items: type: string title: dataset_ids connectorId: exclusiveMinimum: 0 type: integer title: connector_id format: int32 nullable: true referenceReportId: type: string title: reference_report_id nullable: true paradigmOptions: title: paradigm_options nullable: true $ref: '#/components/schemas/textql.rpc.public.paradigm.ParadigmOptions' paradigmType: title: paradigm_type nullable: true $ref: '#/components/schemas/textql.rpc.paradigm_params.ParadigmType' 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 reportOutputStyle: title: report_output_style nullable: true $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookReportStyle' templateHeaderId: type: string title: template_header_id nullable: true selectedTemplateDataIds: type: array items: type: string title: selected_template_data_ids maxConcurrentTemplates: type: integer title: max_concurrent_templates minimum: 1 format: int32 nullable: true autoOptimizeConcurrency: type: boolean title: auto_optimize_concurrency nullable: true connectorIds: type: array items: type: integer format: int32 title: connector_ids llmModel: title: llm_model nullable: true $ref: '#/components/schemas/textql.rpc.public.chat.LlmModel' title: UpdatePlaybookRequest additionalProperties: false textql.rpc.platform.UpdatePlaybookResponse: type: object properties: playbook: title: playbook $ref: '#/components/schemas/textql.rpc.public.playbook.Playbook' updatedFields: type: array items: type: string title: updated_fields updatedAt: title: updated_at $ref: '#/components/schemas/google.protobuf.Timestamp' title: UpdatePlaybookResponse additionalProperties: false textql.rpc.public.cells.PreviewCell: type: object properties: target: type: string title: target previewType: type: string title: preview_type description: '"image", "table", "pdf", "html", "dataframe", "download"' name: type: string title: name url: type: string title: url nullable: true content: type: string title: content nullable: true error: type: string title: error nullable: true title: PreviewCell additionalProperties: false description: primary interface for ana to render sandbox assets client side textql.rpc.public.cells.ReportCell: type: object properties: subject: type: string title: subject summary: type: string title: summary blocks: type: array items: $ref: '#/components/schemas/textql.rpc.public.reports.ReportBlock' title: blocks htmlPreview: type: string title: html_preview chatId: type: string title: chat_id reportId: type: string title: report_id title: ReportCell additionalProperties: false 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_3 - MODEL_HAIKU_3_5 - MODEL_SONNET_3_5 - MODEL_SONNET_3_6 - MODEL_SONNET_3_7 - MODEL_SONNET_4 - MODEL_OPUS_4 - MODEL_SONNET_4_5 - MODEL_HAIKU_4_5 - MODEL_OPUS_4_5 - MODEL_OPUS_4_6 - MODEL_SONNET_4_6 - MODEL_GPT_4 - MODEL_GPT_4_TURBO - MODEL_GPT_4O - MODEL_GPT_4_1 - MODEL_GPT_4_1_MINI - MODEL_GPT_4_1_NANO - MODEL_O_1 - MODEL_O_1_MINI - MODEL_O_3 - MODEL_O_3_MINI - MODEL_O_4_MINI - MODEL_GPT_5 - MODEL_GPT_5_MINI - MODEL_GPT_5_NANO - MODEL_GPT_5_2 - MODEL_GPT_5_2_PRO - MODEL_GPT_5_4 - MODEL_GPT_5_4_MINI - MODEL_GPT_5_5 - MODEL_GPT_5_6_SOL - MODEL_GPT_5_6_TERRA - MODEL_GPT_5_6_LUNA - MODEL_GEMINI_3_FLASH - MODEL_GEMINI_3_PRO - MODEL_GEMINI_3_1_PRO - MODEL_GEMINI_3_5_FLASH - MODEL_KIMI_K2_INSTRUCT - MODEL_QWEN3_CODER - MODEL_QWEN3_CODER_SMALL - MODEL_GPT_OSS - MODEL_GPT_OSS_SMALL - MODEL_GLM_4_5 - MODEL_GLM_4_6 - MODEL_KIMI_K2_THINKING - MODEL_KIMI_K2_5 - MODEL_DEEPSEEK_3_2 - MODEL_GLM_5 - MODEL_KIMI_K2_6 - MODEL_GLM_5_2 - MODEL_KIMI_K2_7_CODE - MODEL_KIMI_K3 - MODEL_QWEN3_7_PLUS - MODEL_MUSE_SPARK_1_1 - MODEL_MUSE_SPARK_1_2 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.paradigm.BasicOptions: type: object title: BasicOptions additionalProperties: false description: |- This is a placeholder for future basic options. Currently, it does not contain any fields. textql.rpc.public.paradigm.ExperimentalOptions: type: object properties: connectorIds: type: array items: type: integer format: int32 title: connector_ids autoApproveEnabled: type: boolean title: auto_approve_enabled title: ExperimentalOptions additionalProperties: false textql.rpc.public.paradigm.OntologyOptions: type: object properties: connectorIds: type: array items: type: integer format: int32 title: connector_ids ontologyIds: type: array items: type: integer format: int32 title: ontology_ids title: OntologyOptions additionalProperties: false textql.rpc.public.paradigm.ParadigmOptions: type: object oneOf: - properties: basic: title: basic $ref: '#/components/schemas/textql.rpc.public.paradigm.BasicOptions' title: basic required: - basic - properties: experimental: title: experimental $ref: '#/components/schemas/textql.rpc.public.paradigm.ExperimentalOptions' title: experimental required: - experimental - properties: ontology: title: ontology $ref: '#/components/schemas/textql.rpc.public.paradigm.OntologyOptions' title: ontology required: - ontology - properties: publicDemo: title: public_demo $ref: '#/components/schemas/textql.rpc.public.paradigm.PublicDemoOptions' title: public_demo required: - publicDemo - properties: research: title: research $ref: '#/components/schemas/textql.rpc.public.paradigm.ResearchOptions' title: research required: - research - properties: sql: title: sql $ref: '#/components/schemas/textql.rpc.public.paradigm.SqlOptions' title: sql required: - sql - properties: tableau: title: tableau $ref: '#/components/schemas/textql.rpc.public.paradigm.TableauOptions' title: tableau required: - tableau - properties: universal: title: universal $ref: '#/components/schemas/textql.rpc.public.paradigm.UniversalOptions' title: universal required: - universal title: ParadigmOptions additionalProperties: false textql.rpc.public.paradigm.PublicDemoOptions: type: object properties: connectorId: type: integer title: connector_id format: int32 title: PublicDemoOptions additionalProperties: false textql.rpc.public.paradigm.ResearchOptions: type: object properties: connectorIds: type: array items: type: integer format: int32 title: connector_ids backgroundColor: type: string title: background_color nullable: true logo: type: string title: logo nullable: true title: ResearchOptions additionalProperties: false textql.rpc.public.paradigm.SqlOptions: type: object properties: connectorIds: type: array items: type: integer format: int32 title: connector_ids title: SqlOptions additionalProperties: false textql.rpc.public.paradigm.TableauOptions: type: object properties: datasetId: type: string title: dataset_id description: id of dataset_version_tableau.dataset_id to use title: TableauOptions additionalProperties: false 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 title: UniversalOptions additionalProperties: false 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.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.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: title: created_at $ref: '#/components/schemas/google.protobuf.Timestamp' updatedAt: title: updated_at $ref: '#/components/schemas/google.protobuf.Timestamp' status: title: status $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookStatus' triggerType: title: trigger_type $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookTriggerType' 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: title: llm_model nullable: true $ref: '#/components/schemas/textql.rpc.public.chat.LlmModel' paradigmOptions: title: paradigm_options $ref: '#/components/schemas/textql.rpc.public.paradigm.ParadigmOptions' paradigmType: title: paradigm_type $ref: '#/components/schemas/textql.rpc.paradigm_params.ParadigmType' isRunning: type: boolean title: is_running nullable: true owner: title: owner nullable: true $ref: '#/components/schemas/textql.rpc.identity.MemberPreview' hasWritePermission: type: boolean title: has_write_permission nullable: true isSubscribed: type: boolean title: is_subscribed nullable: true reportOutputStyle: title: report_output_style description: Report output length $ref: '#/components/schemas/textql.rpc.public.playbook.PlaybookReportStyle' 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: title: duplicated_at nullable: true $ref: '#/components/schemas/google.protobuf.Timestamp' chatAccessMode: title: chat_access_mode $ref: '#/components/schemas/textql.rpc.public.playbook.ChatAccessMode' 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 title: Playbook additionalProperties: false textql.rpc.public.playbook.PlaybookReport: type: object properties: id: type: string title: id description: UUID chatId: type: string title: chat_id description: UUID cellId: type: string title: cell_id description: UUID createdAt: title: created_at $ref: '#/components/schemas/google.protobuf.Timestamp' subject: type: string title: subject summary: type: string title: summary blocks: type: array items: $ref: '#/components/schemas/textql.rpc.public.reports.ReportBlock' title: blocks htmlPreview: type: string title: html_preview playbookId: type: string title: playbook_id description: UUID readAt: title: read_at description: When the current member read this report, not present if the current member hasn't read it nullable: true $ref: '#/components/schemas/google.protobuf.Timestamp' playbookTemplateDataId: type: string title: playbook_template_data_id description: References UUID nullable: true title: PlaybookReport additionalProperties: false textql.rpc.public.playbook.PlaybookReportStyle: type: string title: PlaybookReportStyle enum: - REPORT_STYLE_UNKNOWN - EXECUTIVE_REPORT - VERBOSE - CONCISE textql.rpc.public.playbook.PlaybookSortField: type: string title: PlaybookSortField enum: - SORT_FIELD_UNKNOWN - SORT_FIELD_NAME - SORT_FIELD_CREATED_AT - SORT_FIELD_UPDATED_AT textql.rpc.public.playbook.PlaybookStatus: type: string title: PlaybookStatus enum: - STATUS_UNKNOWN - STATUS_ACTIVE - STATUS_INACTIVE - STATUS_EMPTY - ALL_PLAYBOOKS textql.rpc.public.playbook.PlaybookTriggerType: type: string title: PlaybookTriggerType enum: - TRIGGER_TYPE_UNKNOWN - TRIGGER_TYPE_CRON - TRIGGER_TYPE_WEBHOOK textql.rpc.public.reports.CardBlock: type: object properties: blocks: type: array items: $ref: '#/components/schemas/textql.rpc.public.reports.ReportBlock' title: blocks title: CardBlock additionalProperties: false textql.rpc.public.reports.DividerBlock: type: object title: DividerBlock additionalProperties: false textql.rpc.public.reports.HeroBlock: type: object properties: imageUrl: type: string title: image_url imageAlt: type: string title: image_alt nullable: true title: HeroBlock additionalProperties: false textql.rpc.public.reports.ImageBlock: type: object properties: imageUrl: type: string title: image_url imageAlt: type: string title: image_alt nullable: true variant: title: variant nullable: true $ref: '#/components/schemas/textql.rpc.public.reports.ImageVariant' title: ImageBlock additionalProperties: false textql.rpc.public.reports.ImageTextBlock: type: object properties: imageUrl: type: string title: image_url imageAlt: type: string title: image_alt nullable: true variant: title: variant nullable: true $ref: '#/components/schemas/textql.rpc.public.reports.ImageVariant' heading: type: string title: heading nullable: true content: type: string title: content nullable: true title: ImageTextBlock additionalProperties: false textql.rpc.public.reports.ImageVariant: type: string title: ImageVariant enum: - IMAGE_VARIANT_CIRCULAR - IMAGE_VARIANT_ROUNDED - IMAGE_VARIANT_PILL - IMAGE_VARIANT_NONE textql.rpc.public.reports.ListBlock: type: object properties: heading: type: string title: heading nullable: true items: type: array items: type: string title: items title: ListBlock additionalProperties: false textql.rpc.public.reports.ReportBlock: type: object oneOf: - properties: card: title: card $ref: '#/components/schemas/textql.rpc.public.reports.CardBlock' title: card required: - card - properties: divider: title: divider $ref: '#/components/schemas/textql.rpc.public.reports.DividerBlock' title: divider required: - divider - properties: hero: title: hero $ref: '#/components/schemas/textql.rpc.public.reports.HeroBlock' title: hero required: - hero - properties: image: title: image $ref: '#/components/schemas/textql.rpc.public.reports.ImageBlock' title: image required: - image - properties: imageText: title: image_text $ref: '#/components/schemas/textql.rpc.public.reports.ImageTextBlock' title: image_text required: - imageText - properties: list: title: list $ref: '#/components/schemas/textql.rpc.public.reports.ListBlock' title: list required: - list - properties: spacer: title: spacer $ref: '#/components/schemas/textql.rpc.public.reports.SpacerBlock' title: spacer required: - spacer - properties: text: title: text $ref: '#/components/schemas/textql.rpc.public.reports.TextBlock' title: text required: - text title: ReportBlock additionalProperties: false textql.rpc.public.reports.SpacerBlock: type: object properties: height: type: integer title: height format: int32 nullable: true title: SpacerBlock additionalProperties: false textql.rpc.public.reports.TextBlock: type: object properties: heading: type: string title: heading nullable: true content: type: string title: content nullable: true title: TextBlock additionalProperties: false security: [] tags: - name: textql.rpc.platform.PlaybookService description: Platform Playbook Service - External API for playbook management