TextQL Power BI Service API

The PowerBIService API from TextQL — 10 operation(s) for powerbiservice.

Operations 10

POST /textql.rpc.public.powerbi.PowerBIService/ExportPowerBIReportImage ExportPowerBIReportImage #
POST /textql.rpc.public.powerbi.PowerBIService/GeneratePowerBIEmbedToken GeneratePowerBIEmbedToken #
POST /textql.rpc.public.powerbi.PowerBIService/GetPowerBIDatasetPreview GetPowerBIDatasetPreview #
POST /textql.rpc.public.powerbi.PowerBIService/GetSyncedPowerBIItems GetSyncedPowerBIItems #
POST /textql.rpc.public.powerbi.PowerBIService/ListPowerBIDatasets ListPowerBIDatasets #
POST /textql.rpc.public.powerbi.PowerBIService/ListPowerBIReports ListPowerBIReports #
POST /textql.rpc.public.powerbi.PowerBIService/ListPowerBIWorkspaces ListPowerBIWorkspaces #
POST /textql.rpc.public.powerbi.PowerBIService/SyncPowerBIItems SyncPowerBIItems #
POST /textql.rpc.public.powerbi.PowerBIService/TestPowerBIConnection TestPowerBIConnection #
POST /textql.rpc.public.powerbi.PowerBIService/UnsyncPowerBIItems UnsyncPowerBIItems #

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-powerbiservice-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-powerbiservice-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: TextQL Power BI 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: PowerBIService
paths:
  /textql.rpc.public.powerbi.PowerBIService/ExportPowerBIReportImage:
    post:
      tags:
      - PowerBIService
      summary: ExportPowerBIReportImage
      operationId: PowerBIService_ExportPowerBIReportImage
      x-speakeasy-group: powerbi
      x-speakeasy-name-override: exportReportImage
      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.powerbi.ExportPowerBIReportImageRequest'
        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.powerbi.ExportPowerBIReportImageResponse'
      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.powerbi.exportReportImage({\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.powerbi.export_report_image()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.powerbi.PowerBIService/GeneratePowerBIEmbedToken:
    post:
      tags:
      - PowerBIService
      summary: GeneratePowerBIEmbedToken
      operationId: PowerBIService_GeneratePowerBIEmbedToken
      x-speakeasy-group: powerbi
      x-speakeasy-name-override: generateEmbedToken
      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.powerbi.GeneratePowerBIEmbedTokenRequest'
        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.powerbi.GeneratePowerBIEmbedTokenResponse'
      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.powerbi.generateEmbedToken({\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.powerbi.generate_embed_token()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.powerbi.PowerBIService/GetPowerBIDatasetPreview:
    post:
      tags:
      - PowerBIService
      summary: GetPowerBIDatasetPreview
      operationId: PowerBIService_GetPowerBIDatasetPreview
      x-speakeasy-group: powerbi
      x-speakeasy-name-override: getDatasetPreview
      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.powerbi.GetPowerBIDatasetPreviewRequest'
        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.powerbi.GetPowerBIDatasetPreviewResponse'
      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.powerbi.getDatasetPreview({\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.powerbi.get_dataset_preview()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.powerbi.PowerBIService/GetSyncedPowerBIItems:
    post:
      tags:
      - PowerBIService
      summary: GetSyncedPowerBIItems
      operationId: PowerBIService_GetSyncedPowerBIItems
      x-speakeasy-group: powerbi
      x-speakeasy-name-override: getSyncedItems
      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.powerbi.GetSyncedPowerBIItemsRequest'
        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.powerbi.GetSyncedPowerBIItemsResponse'
      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.powerbi.getSyncedItems({\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.powerbi.get_synced_items()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.powerbi.PowerBIService/ListPowerBIDatasets:
    post:
      tags:
      - PowerBIService
      summary: ListPowerBIDatasets
      operationId: PowerBIService_ListPowerBIDatasets
      x-speakeasy-group: powerbi
      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.powerbi.ListPowerBIDatasetsRequest'
        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.powerbi.ListPowerBIDatasetsResponse'
      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.powerbi.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.powerbi.list()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.powerbi.PowerBIService/ListPowerBIReports:
    post:
      tags:
      - PowerBIService
      summary: ListPowerBIReports
      operationId: PowerBIService_ListPowerBIReports
      x-speakeasy-group: powerbi
      x-speakeasy-name-override: listReports
      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.powerbi.ListPowerBIReportsRequest'
        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.powerbi.ListPowerBIReportsResponse'
      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.powerbi.listReports({\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.powerbi.list_reports()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.powerbi.PowerBIService/ListPowerBIWorkspaces:
    post:
      tags:
      - PowerBIService
      summary: ListPowerBIWorkspaces
      operationId: PowerBIService_ListPowerBIWorkspaces
      x-speakeasy-group: powerbi
      x-speakeasy-name-override: listWorkspaces
      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.powerbi.ListPowerBIWorkspacesRequest'
        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.powerbi.ListPowerBIWorkspacesResponse'
      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.powerbi.listWorkspaces({\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.powerbi.list_workspaces()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.powerbi.PowerBIService/SyncPowerBIItems:
    post:
      tags:
      - PowerBIService
      summary: SyncPowerBIItems
      operationId: PowerBIService_SyncPowerBIItems
      x-speakeasy-group: powerbi
      x-speakeasy-name-override: syncPowerBIItems
      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.powerbi.SyncPowerBIItemsRequest'
        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.powerbi.SyncPowerBIItemsResponse'
      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.powerbi.syncPowerBIItems({\n    body: {\n      reports: [\n        {\n          createdDate: new Date(\"2023-01-15T01:30:15.01Z\"),\n        },\n      ],\n      datasets: [\n        {\n          createdDate: new Date(\"2023-01-15T01:30:15.01Z\"),\n        },\n      ],\n    },\n  });\n\n  console.log(result);\n}\n\nrun();"
      - lang: python
        label: Python (SDK)
        source: "import os\nfrom textql_sdk import Textql\nfrom textql_sdk.utils import parse_datetime\n\n\nwith Textql(\n    api_key=os.getenv(\"TEXTQL_API_KEY\", \"\"),\n) as textql:\n\n    res = textql.powerbi.sync_power_bi_items(reports=[\n        {\n            \"created_date\": parse_datetime(\"2023-01-15T01:30:15.01Z\"),\n        },\n    ], datasets=[\n        {\n            \"created_date\": parse_datetime(\"2023-01-15T01:30:15.01Z\"),\n        },\n    ])\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.powerbi.PowerBIService/TestPowerBIConnection:
    post:
      tags:
      - PowerBIService
      summary: TestPowerBIConnection
      operationId: PowerBIService_TestPowerBIConnection
      x-speakeasy-group: powerbi
      x-speakeasy-name-override: testConnection
      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.powerbi.TestPowerBIConnectionRequest'
        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.powerbi.TestPowerBIConnectionResponse'
      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.powerbi.testConnection({\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.powerbi.test_connection()\n\n    # Handle response\n    print(res)"
  /textql.rpc.public.powerbi.PowerBIService/UnsyncPowerBIItems:
    post:
      tags:
      - PowerBIService
      summary: UnsyncPowerBIItems
      operationId: PowerBIService_UnsyncPowerBIItems
      x-speakeasy-group: powerbi
      x-speakeasy-name-override: unsyncItems
      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.powerbi.UnsyncPowerBIItemsRequest'
        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.powerbi.UnsyncPowerBIItemsResponse'
      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.powerbi.unsyncItems({\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.powerbi.unsync_items()\n\n    # Handle response\n    print(res)"
components:
  schemas:
    textql.rpc.public.powerbi.ListPowerBIDatasetsResponse:
      type: object
      properties:
        datasets:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.powerbi.PowerBIDataset'
          title: datasets
        error:
          type: string
          title: error
          nullable: true
      title: ListPowerBIDatasetsResponse
      additionalProperties: false
    textql.rpc.public.powerbi.PowerBIWorkspace:
      type: object
      properties:
        id:
          type: string
          title: id
        name:
          type: string
          title: name
        isReadOnly:
          type: boolean
          title: is_read_only
        isOnPremium:
          type: boolean
          title: is_on_premium
      title: PowerBIWorkspace
      additionalProperties: false
    textql.rpc.public.powerbi.TestPowerBIConnectionResponse:
      type: object
      properties:
        success:
          type: boolean
          title: success
        error:
          type: string
          title: error
      title: TestPowerBIConnectionResponse
      additionalProperties: false
    textql.rpc.public.powerbi.ListPowerBIWorkspacesResponse:
      type: object
      properties:
        workspaces:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.powerbi.PowerBIWorkspace'
          title: workspaces
        error:
          type: string
          title: error
          nullable: true
      title: ListPowerBIWorkspacesResponse
      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.
    textql.rpc.public.powerbi.PowerBIReport:
      type: object
      properties:
        id:
          type: string
          title: id
        name:
          type: string
          title: name
        webUrl:
          type: string
          title: web_url
        embedUrl:
          type: string
          title: embed_url
        datasetId:
          type: string
          title: dataset_id
        createdBy:
          type: string
          title: created_by
        createdDate:
          title: created_date
          $ref: '#/components/schemas/google.protobuf.Timestamp'
      title: PowerBIReport
      additionalProperties: false
    textql.rpc.public.powerbi.ListPowerBIWorkspacesRequest:
      type: object
      properties:
        connectorId:
          type: integer
          title: connector_id
          format: int32
      title: ListPowerBIWorkspacesRequest
      additionalProperties: false
    textql.rpc.public.powerbi.GetSyncedPowerBIItemsRequest:
      type: object
      properties:
        connectorId:
          type: integer
          title: connector_id
          format: int32
      title: GetSyncedPowerBIItemsRequest
      additionalProperties: false
    textql.rpc.public.powerbi.PowerBIDataset:
      type: object
      properties:
        id:
          type: string
          title: id
        name:
          type: string
          title: name
        addRowsApiEnabled:
          type: boolean
          title: add_rows_api_enabled
        configuredBy:
          type: string
          title: configured_by
        isRefreshable:
          type: boolean
          title: is_refreshable
        isEffectiveIdentityRequired:
          type: boolean
          title: is_effective_identity_required
        isEffectiveIdentityRolesRequired:
          type: boolean
          title: is_effective_identity_roles_required
        isOnPremGatewayRequired:
          type: boolean
          title: is_on_prem_gateway_required
        createdDate:
          title: created_date
          $ref: '#/components/schemas/google.protobuf.Timestamp'
        tableNames:
          type: array
          items:
            type: string
          title: table_names
      title: PowerBIDataset
      additionalProperties: false
    textql.rpc.public.powerbi.SyncedPowerBIDataset:
      type: object
      properties:
        dataset:
          title: dataset
          $ref: '#/components/schemas/textql.rpc.public.powerbi.PowerBIDataset'
        workspaceId:
          type: string
          title: workspace_id
        workspaceName:
          type: string
          title: workspace_name
        syncedAt:
          title: synced_at
          $ref: '#/components/schemas/google.protobuf.Timestamp'
      title: SyncedPowerBIDataset
      additionalProperties: false
    textql.rpc.public.powerbi.UnsyncPowerBIItemsRequest:
      type: object
      properties:
        connectorId:
          type: integer
          title: connector_id
          format: int32
        reportIds:
          type: array
          items:
            type: string
          title: report_ids
        datasetIds:
          type: array
          items:
            type: string
          title: dataset_ids
      title: UnsyncPowerBIItemsRequest
      additionalProperties: false
    textql.rpc.public.powerbi.ExportPowerBIReportImageResponse:
      type: object
      properties:
        imageData:
          type: string
          title: image_data
          format: byte
        imageUrl:
          type: string
          title: image_url
        error:
          type: string
          title: error
          nullable: true
      title: ExportPowerBIReportImageResponse
      additionalProperties: false
    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'
    textql.rpc.public.powerbi.GetPowerBIDatasetPreviewRequest:
      type: object
      properties:
        connectorId:
          type: integer
          title: connector_id
          format: int32
        workspaceId:
          type: string
          title: workspace_id
        datasetId:
          type: string
          title: dataset_id
        datasetName:
          type: string
          title: dataset_name
        limit:
          type: integer
          title: limit
          format: int32
      title: GetPowerBIDatasetPreviewRequest
      additionalProperties: false
    textql.rpc.public.powerbi.GeneratePowerBIEmbedTokenRequest:
      type: object
      properties:
        connectorId:
          type: integer
          title: connector_id
          format: int32
        workspaceId:
          type: string
          title: workspace_id
        reportId:
          type: string
          title: report_id
        datasetId:
          type: string
          title: dataset_id
      title: GeneratePowerBIEmbedTokenRequest
      additionalProperties: false
    textql.rpc.public.powerbi.ListPowerBIDatasetsRequest:
      type: object
      properties:
        connectorId:
          type: integer
          title: connector_id
          format: int32
        workspaceId:
          type: string
          title: workspace_id
      title: ListPowerBIDatasetsRequest
      additionalProperties: false
    textql.rpc.public.powerbi.TestPowerBIConnectionRequest:
      type: object
      properties:
        connectorId:
          type: integer
          title: connector_id
          format: int32
          nullable: true
        tenantId:
          type: string
          title: tenant_id
          nullable: true
        clientId:
          type: string
          title: client_id
          nullable: true
        clientSecret:
          type: string
          title: client_secret
          nullable: true
      title: TestPowerBIConnectionRequest
      additionalProperties: false
    textql.rpc.public.powerbi.SyncedPowerBIReport:
      type: object
      properties:
        report:
          title: report
          $ref: '#/components/schemas/textql.rpc.public.powerbi.PowerBIReport'
        workspaceId:
          type: string
          title: workspace_id
        workspaceName:
          type: string
          title: workspace_name
        syncedAt:
          title: synced_at
          $ref: '#/components/schemas/google.protobuf.Timestamp'
      title: SyncedPowerBIReport
      additionalProperties: false
    textql.rpc.public.powerbi.SyncPowerBIItemsRequest:
      type: object
      properties:
        connectorId:
          type: integer
          title: connector_id
          format: int32
        workspaceId:
          type: string
          title: workspace_id
        workspaceName:
          type: string
          title: workspace_name
        reports:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.powerbi.PowerBIReport'
          title: reports
        datasets:
          type: array
          items:
            $ref: '#/components/schemas/textql.rpc.public.powerbi.PowerBIDataset'
          title: datasets
      title: SyncPowerBIItemsRequest
      additionalProperties: false
    textql.rpc.public.powerbi.GeneratePowerBIEmbedTokenResponse:
      type: object
      properties:
        token:
          type: string
          title: token
        tokenId:
          type: string
          title: token_id
        expiration:
          title: expiration
          $ref: '#/components/schemas/google.protobuf.Timestamp'
      title: GeneratePowerBIEmbedTokenResponse
      additionalProperties: false
    google.protobuf.Timestamp:
      type: string
      examples:
      - '2023-01-15T01:30:15.01Z'
      - '2024-12-25T12:00:00Z'
      format: date-time
      description: "A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n     Timestamp timestamp;\n     timestamp.set_seconds(time(NULL));\n     timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n     struct timeval tv;\n     gettimeofday(&tv, NULL);\n\n     Timestamp timestamp;\n     timestamp.set_seconds(tv.tv_sec);\n     timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n     FILETIME ft;\n     GetSystemTimeAsFileTime(&ft);\n     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n\n     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n

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