TextQL App Service API

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.

Operations 24

POST /textql.rpc.public.app.AppService/AppHeartbeat AppHeartbeat #
POST /textql.rpc.public.app.AppService/CreateApp CreateApp #
POST /textql.rpc.public.app.AppService/DeleteApp DeleteApp #
POST /textql.rpc.public.app.AppService/DuplicateApp Duplicates an app the caller can view into a new app they own, named "Copy of ". #
POST /textql.rpc.public.app.AppService/GetApp GetApp #
POST /textql.rpc.public.app.AppService/GetAppDBSchema Replaces the calling member's entire ordering; capped server-side #
POST /textql.rpc.public.app.AppService/GetAppDBTablePreview View analytics: reads the engagement views recorded on app page load #
POST /textql.rpc.public.app.AppService/GetAppMemberState Per-member notification subscription to an app ("watch this app") #
POST /textql.rpc.public.app.AppService/GetAppVersion Overwrites the published tree's pinned _runtime/ana-1.js with the platform's… #
POST /textql.rpc.public.app.AppService/GetAppViewStats Keeps the viewed app's compute worker alive; first view spawns and pre-warms it… #
POST /textql.rpc.public.app.AppService/GetMembersWithApps GetMembersWithApps #
POST /textql.rpc.public.app.AppService/InvokeAppComputeFunction InvokeAppComputeFunction #
POST /textql.rpc.public.app.AppService/ListAppActivitySince Favorite/unfavorite a library item (app or dashboard) for the calling member. #
POST /textql.rpc.public.app.AppService/ListAppVersions Re-fetches data sources, rebuilds the document with a fresh snapshot, re-uploads #
POST /textql.rpc.public.app.AppService/ListApps ListApps #
POST /textql.rpc.public.app.AppService/ListMyAppMemberActivity Watcher management: app owners/editors and org admins list the app's… #
POST /textql.rpc.public.app.AppService/MoveAppToFolder MoveAppToFolder #
POST /textql.rpc.public.app.AppService/PresenceHeartbeat Ordering overlay for the sidebar Bookmarks section: one position list per… #
POST /textql.rpc.public.app.AppService/RecordAppMemberActivity RecordAppMemberActivity #
POST /textql.rpc.public.app.AppService/RefreshApp Moves an app into a library folder (or to root when folder_id is empty) #
POST /textql.rpc.public.app.AppService/RestoreAppVersion Version history: git-backed, one version per save (plus legacy publish-era… #
POST /textql.rpc.public.app.AppService/SetAppMemberState SetAppMemberState #
POST /textql.rpc.public.app.AppService/SetFavorite Executes a declared compute function on a pooled sandbox worker; gated… #
POST /textql.rpc.public.app.AppService/UpdateApp UpdateApp #

Documentation

Specifications

Other Resources

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-appservice-api"
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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

textql-appservice-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: TextQL App Service 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/rpc/public
security:
- apiKey: []
tags:
- 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.'
paths:
  /textql.rpc.public.app.AppService/AppHeartbeat:
    post:
      tags:
      - AppService
      summary: AppHeartbeat
      operationId: AppService_AppHeartbeat
      x-speakeasy-group: apps
      x-speakeasy-name-override: heartbeat
      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.app.AppHeartbeatRequest'
        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/google.protobuf.Empty'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.heartbeat({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.heartbeat()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/CreateApp:
    post:
      tags:
      - AppService
      summary: CreateApp
      operationId: AppService_CreateApp
      x-speakeasy-group: apps
      x-speakeasy-name-override: createApp
      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.app.CreateAppRequest'
        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.app.CreateAppResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.createApp({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.create_app()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/DeleteApp:
    post:
      tags:
      - AppService
      summary: DeleteApp
      operationId: AppService_DeleteApp
      x-speakeasy-group: apps
      x-speakeasy-name-override: deleteApp
      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.app.DeleteAppRequest'
        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/google.protobuf.Empty'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.deleteApp({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.delete_app()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/DuplicateApp:
    post:
      tags:
      - AppService
      summary: Duplicates an app the caller can view into a new app they own, named "Copy of ".
      description: 'Duplicates an app the caller can view into a new app they own,

        named "Copy of ". Copies code/files/data sources/compute functions/

        schedule; never carries over the source''s data snapshot.'
      operationId: AppService_DuplicateApp
      x-speakeasy-group: apps
      x-speakeasy-name-override: duplicate
      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.app.DuplicateAppRequest'
        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.app.DuplicateAppResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.duplicate({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.duplicate()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/GetApp:
    post:
      tags:
      - AppService
      summary: GetApp
      operationId: AppService_GetApp
      x-speakeasy-group: apps
      x-speakeasy-name-override: get
      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.app.GetAppRequest'
        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.app.GetAppResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.get({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.get()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/GetAppDBSchema:
    post:
      tags:
      - AppService
      summary: Replaces the calling member's entire ordering; capped server-side
      description: Replaces the calling member's entire ordering; capped server-side.
      operationId: AppService_GetAppDBSchema
      x-speakeasy-group: apps
      x-speakeasy-name-override: getDBSchema
      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.app.GetAppDBSchemaRequest'
        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.app.GetAppDBSchemaResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.getDBSchema({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.get_db_schema()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/GetAppDBTablePreview:
    post:
      tags:
      - AppService
      summary: 'View analytics: reads the engagement views recorded on app page load'
      description: 'View analytics: reads the engagement views recorded on app page load.'
      operationId: AppService_GetAppDBTablePreview
      x-speakeasy-group: apps
      x-speakeasy-name-override: getDBTablePreview
      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.app.GetAppDBTablePreviewRequest'
        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.app.GetAppDBTablePreviewResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.getDBTablePreview({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.get_db_table_preview()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/GetAppMemberState:
    post:
      tags:
      - AppService
      summary: Per-member notification subscription to an app ("watch this app")
      description: Per-member notification subscription to an app ("watch this app").
      operationId: AppService_GetAppMemberState
      x-speakeasy-group: apps
      x-speakeasy-name-override: getMemberState
      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.app.GetAppMemberStateRequest'
        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.app.GetAppMemberStateResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.getMemberState({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.get_member_state()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/GetAppVersion:
    post:
      tags:
      - AppService
      summary: Overwrites the published tree's pinned _runtime/ana-1.js with the platform's…
      description: Overwrites the published tree's pinned _runtime/ana-1.js with the platform's current copy so host-driven affordances (comment hit-testing) work on older documents; never touches authored content or data. repinned=false for legacy pre-tree documents.
      operationId: AppService_GetAppVersion
      x-speakeasy-group: apps
      x-speakeasy-name-override: getAppVersion
      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.app.GetAppVersionRequest'
        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.app.GetAppVersionResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.getAppVersion({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.get_app_version()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/GetAppViewStats:
    post:
      tags:
      - AppService
      summary: Keeps the viewed app's compute worker alive; first view spawns and pre-warms it…
      description: Keeps the viewed app's compute worker alive; first view spawns and pre-warms it (dashboard viewer-TTL parity).
      operationId: AppService_GetAppViewStats
      x-speakeasy-group: apps
      x-speakeasy-name-override: getAppViewStats
      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.app.GetAppViewStatsRequest'
        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.app.GetAppViewStatsResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.getAppViewStats({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.get_app_view_stats()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/GetMembersWithApps:
    post:
      tags:
      - AppService
      summary: GetMembersWithApps
      operationId: AppService_GetMembersWithApps
      x-speakeasy-group: apps
      x-speakeasy-name-override: getMembersWithApps
      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.app.GetMembersWithAppsRequest'
        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.app.GetMembersWithAppsResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.getMembersWithApps({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.get_members_with_apps(body={})\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/InvokeAppComputeFunction:
    post:
      tags:
      - AppService
      summary: InvokeAppComputeFunction
      operationId: AppService_InvokeAppComputeFunction
      x-speakeasy-group: apps
      x-speakeasy-name-override: invokeComputeFunction
      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.app.InvokeAppComputeFunctionRequest'
        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.app.InvokeAppComputeFunctionResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.invokeComputeFunction({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.invoke_compute_function()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/ListAppActivitySince:
    post:
      tags:
      - AppService
      summary: Favorite/unfavorite a library item (app or dashboard) for the calling member.
      description: 'Favorite/unfavorite a library item (app or dashboard) for the calling member.

        Per-member, per-org; favorited=false hard-deletes the row. Covers both primitives

        since the merged library page pins apps and dashboards through one client.'
      operationId: AppService_ListAppActivitySince
      x-speakeasy-group: apps
      x-speakeasy-name-override: listActivitySince
      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.app.ListAppActivitySinceRequest'
        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.app.ListAppActivitySinceResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.listActivitySince({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.list_activity_since()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/ListAppVersions:
    post:
      tags:
      - AppService
      summary: Re-fetches data sources, rebuilds the document with a fresh snapshot, re-uploads
      description: Re-fetches data sources, rebuilds the document with a fresh snapshot, re-uploads.
      operationId: AppService_ListAppVersions
      x-speakeasy-group: apps
      x-speakeasy-name-override: listVersions
      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.app.ListAppVersionsRequest'
        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.app.ListAppVersionsResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.listVersions({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.list_versions()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/ListApps:
    post:
      tags:
      - AppService
      summary: ListApps
      operationId: AppService_ListApps
      x-speakeasy-group: apps
      x-speakeasy-name-override: list
      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.app.ListAppsRequest'
        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.app.ListAppsResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.list({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.list()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/ListMyAppMemberActivity:
    post:
      tags:
      - AppService
      summary: 'Watcher management: app owners/editors and org admins list the app''s…'
      description: 'Watcher management: app owners/editors and org admins list the app''s

        subscribers and add/remove members (Upsert/Delete with member_id).'
      operationId: AppService_ListMyAppMemberActivity
      x-speakeasy-group: apps
      x-speakeasy-name-override: listMyMemberActivity
      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.app.ListMyAppMemberActivityRequest'
        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.app.ListMyAppMemberActivityResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.listMyMemberActivity({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.apps.list_my_member_activity()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.app.AppService/MoveAppToFolder:
    post:
      tags:
      - AppService
      summary: MoveAppToFolder
      operationId: AppService_MoveAppToFolder
      x-speakeasy-group: apps
      x-speakeasy-name-override: moveAppToFolder
      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.app.MoveAppToFolderRequest'
        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.app.MoveAppToFolderResponse'
      x-codeSamples:
      - lang: typescript
        label: TypeScript (SDK)
        source: "import { Textql } from \"@textql/sdk\";\n\nconst textql = new Textql({\n  apiKey: process.env[\"TEXTQL_API_KEY\"] ?? \"\",\n});\n\nasync function run() {\n  const result = await textql.apps.moveAppToFolder({\n    body: {},\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\n\n\nwith Textql(\n    api_key=os.g

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