Google Data Studio API

The Looker Studio API enables programmatic management of Looker Studio assets, including searching for assets and managing permissions within Google Workspace or Cloud Identity organizations.

OpenAPI Specification

google-data-studio-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Google Data Studio API
  description: >-
    The Looker Studio API (formerly Google Data Studio API) enables programmatic
    management of Looker Studio assets, including searching for assets and
    managing permissions within Google Workspace or Cloud Identity organizations.
    The API is only available to users that belong to an organization with Google
    Workspace or Cloud Identity.
  version: v1
  contact:
    name: Google
    url: https://developers.google.com/looker-studio/integrate/api
  license:
    name: Google APIs Terms of Service
    url: https://developers.google.com/terms
  x-date: '2026-03-04'
externalDocs:
  description: Looker Studio API Documentation
  url: https://developers.google.com/looker-studio/integrate/api
servers:
  - url: https://datastudio.googleapis.com/v1
    description: Looker Studio API v1 production server
security:
  - oauth2: []
tags:
  - name: Assets
    description: Operations for searching and listing Looker Studio assets
  - name: Permissions
    description: Operations for managing access controls on Looker Studio assets
paths:
  /assets:search:
    get:
      operationId: searchAssets
      summary: Google Data Studio Search Looker Studio assets
      description: >-
        Searches the authenticated user's Looker Studio assets. Supports
        filtering by asset type, title, owner, and trash status. Results are
        paginated and can be sorted by various fields. Advanced search filters
        can be used in the title parameter to narrow results by creator, owner,
        project number, parent workspace, and sharing recipients.
      tags:
        - Assets
      parameters:
        - name: assetTypes
          in: query
          required: true
          description: >-
            The asset type to search. Exactly one asset type must be specified.
          schema:
            type: string
            enum:
              - REPORT
              - DATA_SOURCE
        - name: title
          in: query
          required: false
          description: >-
            Search string checked against asset title and description. Supports
            advanced search syntax including creator:me, creator:[email protected],
            owner:me, owner:[email protected], projectNumber:123456789,
            parentWorkspace:{uuid}, from:[email protected],
            to:[email protected], and to:[email protected].
          schema:
            type: string
        - name: includeTrashed
          in: query
          required: false
          description: >-
            When true, includes only trashed assets. When false or omitted,
            excludes trashed assets. Defaults to false.
          schema:
            type: boolean
            default: false
        - name: owner
          in: query
          required: false
          description: Filter by the asset owner's email address.
          schema:
            type: string
            format: email
        - name: orderBy
          in: query
          required: false
          description: >-
            Sort order for the results. Supported values are title,
            last_viewed_by_me, create_time, last_accessed_time, and id.
          schema:
            type: string
            enum:
              - title
              - last_viewed_by_me
              - create_time
              - last_accessed_time
              - id
        - name: pageSize
          in: query
          required: false
          description: >-
            The maximum number of results to return per page. Defaults to 1000.
          schema:
            type: integer
            default: 1000
        - name: pageToken
          in: query
          required: false
          description: >-
            Token for pagination. Use the nextPageToken or previousPageToken
            value from a prior response to retrieve subsequent pages.
          schema:
            type: string
      responses:
        '200':
          description: Successful response containing a list of matching assets.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchAssetsResponse'
        '400':
          description: Invalid request parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication required or invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Insufficient permissions. The user may not belong to a Google
            Workspace or Cloud Identity organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /assets/{assetName}/permissions:
    get:
      operationId: getPermissions
      summary: Google Data Studio Get asset permissions
      description: >-
        Retrieves the access controls (permissions) for a specified Looker Studio
        asset. Returns a Permissions object containing a map of roles to their
        assigned members, along with an etag for concurrency control.
      tags:
        - Permissions
      parameters:
        - $ref: '#/components/parameters/AssetName'
      responses:
        '200':
          description: Successful response containing the asset's permissions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Permissions'
        '401':
          description: Authentication required or invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient permissions to view asset access controls.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: The specified asset was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: patchPermissions
      summary: Google Data Studio Update asset permissions
      description: >-
        Modifies the access controls for a specified Looker Studio asset.
        Replaces the permissions with the provided values. The OWNER role cannot
        be updated through this endpoint. Use the etag field for optimistic
        concurrency control to detect and fail on concurrent modifications.
      tags:
        - Permissions
      parameters:
        - $ref: '#/components/parameters/AssetName'
      requestBody:
        required: true
        description: The updated permissions object.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Permissions'
      responses:
        '200':
          description: >-
            Successful response containing the updated permissions for the asset.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Permissions'
        '400':
          description: >-
            Invalid request. May occur if attempting to modify the OWNER role.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication required or invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient permissions to modify asset access controls.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: The specified asset was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            Conflict due to concurrent modification detected via etag mismatch.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /assets/{assetName}/permissions:addMembers:
    post:
      operationId: addMembers
      summary: Google Data Studio Add members to an asset
      description: >-
        Adds members to a specified role on a Looker Studio asset. Members
        cannot be added to the OWNER role. Members are identified by a type
        prefix such as user:, group:, domain:, or serviceAccount: followed by
        the identifier.
      tags:
        - Permissions
      parameters:
        - $ref: '#/components/parameters/AssetName'
      requestBody:
        required: true
        description: >-
          The role and list of members to add to the asset.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddMembersRequest'
      responses:
        '200':
          description: >-
            Successful response containing the updated permissions for the asset.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Permissions'
        '400':
          description: >-
            Invalid request. May occur if attempting to add members to the
            OWNER role.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication required or invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient permissions to add members to the asset.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: The specified asset was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /assets/{assetName}/permissions:revokeAllPermissions:
    post:
      operationId: revokeAllPermissions
      summary: Google Data Studio Revoke all permissions for members
      description: >-
        Removes specified members from all roles on a Looker Studio asset.
        Owners cannot be removed, and the authorized user cannot remove
        themselves. Revoking permissions for an invalid member or a member that
        does not belong to the asset will not cause the request to fail.
        Well-formed requests always return a 200 OK response.
      tags:
        - Permissions
      parameters:
        - $ref: '#/components/parameters/AssetName'
      requestBody:
        required: true
        description: The list of members whose permissions should be revoked.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevokeAllPermissionsRequest'
      responses:
        '200':
          description: >-
            Successful response containing the updated permissions. Always
            returned for well-formed requests even if a member is invalid or
            does not belong to the asset.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Permissions'
        '401':
          description: Authentication required or invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient permissions to revoke member access.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: The specified asset was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  securitySchemes:
    oauth2:
      type: oauth2
      description: >-
        OAuth 2.0 authentication. Requires domain-wide delegation configured
        by a Google Workspace administrator.
      flows:
        authorizationCode:
          authorizationUrl: https://accounts.google.com/o/oauth2/auth
          tokenUrl: https://oauth2.googleapis.com/token
          scopes:
            https://www.googleapis.com/auth/datastudio: >-
              Full read and write access to Looker Studio assets and permissions.
            https://www.googleapis.com/auth/datastudio.readonly: >-
              Read-only access to Looker Studio assets and permissions.
            https://www.googleapis.com/auth/userinfo.profile: >-
              Access to user profile information.
  parameters:
    AssetName:
      name: assetName
      in: path
      required: true
      description: >-
        The name (ID) of the Looker Studio asset.
      schema:
        type: string
  schemas:
    Asset:
      type: object
      description: Represents a Looker Studio asset such as a report or data source.
      properties:
        assetType:
          $ref: '#/components/schemas/AssetType'
        name:
          type: string
          description: The unique name (ID) of the asset.
        title:
          type: string
          description: The display title of the asset.
        description:
          type: string
          description: >-
            Description of the asset. Only supported for REPORT asset type.
        owner:
          type: string
          description: The email address of the asset owner.
        creator:
          type: string
          description: The email address of the asset creator.
        createTime:
          type: string
          format: date-time
          description: Timestamp when the asset was created.
        updateTime:
          type: string
          format: date-time
          description: Timestamp when the asset was last modified.
        updateByMeTime:
          type: string
          format: date-time
          description: >-
            Timestamp when the asset was last modified by the user making the
            API call.
        lastViewByMeTime:
          type: string
          format: date-time
          description: >-
            Timestamp when the asset was last viewed by the user making the
            API call.
        trashed:
          type: boolean
          description: Indicates whether the asset is in the trash.
      required:
        - assetType
        - name
        - title
        - owner
        - creator
        - createTime
        - updateTime
    AssetType:
      type: string
      description: The type of a Looker Studio asset.
      enum:
        - REPORT
        - DATA_SOURCE
    SearchAssetsResponse:
      type: object
      description: Response from searching Looker Studio assets.
      properties:
        assets:
          type: array
          description: The list of assets matching the search criteria.
          items:
            $ref: '#/components/schemas/Asset'
        nextPageToken:
          type: string
          description: >-
            Token to retrieve the next page of results. Only present when
            results exceed the page size.
        previousPageToken:
          type: string
          description: >-
            Token to retrieve the previous page of results. Empty string
            indicates the beginning of the result set.
    Permissions:
      type: object
      description: >-
        Access control configuration for a Looker Studio asset containing a
        mapping of roles to their assigned members.
      properties:
        permissions:
          type: object
          description: A map of role names to their member lists.
          additionalProperties:
            $ref: '#/components/schemas/RoleMembers'
        etag:
          type: string
          description: >-
            Etag for optimistic concurrency control. Used to detect and fail
            on concurrent modifications.
    RoleMembers:
      type: object
      description: A list of members assigned to a particular role.
      properties:
        members:
          type: array
          description: >-
            List of member identifiers. Members are prefixed with their type
            such as user:[email protected], group:[email protected],
            domain:example.com, serviceAccount:[email protected],
            or the special value allUsers.
          items:
            type: string
    Role:
      type: string
      description: >-
        A role that can be assigned to members on a Looker Studio asset.
      enum:
        - VIEWER
        - EDITOR
        - OWNER
        - LINK_VIEWER
        - LINK_EDITOR
    Member:
      type: string
      description: >-
        A member identifier with a type prefix. Supported prefixes are user:
        (Google account), group: (Google Group), domain: (organization domain),
        serviceAccount: (Cloud service account), and the special value allUsers
        (anyone with the link).
      examples:
        - user:[email protected]
        - group:[email protected]
        - domain:example.com
        - serviceAccount:[email protected]
        - allUsers
    AddMembersRequest:
      type: object
      description: Request to add members to a specific role on an asset.
      required:
        - role
        - members
      properties:
        role:
          $ref: '#/components/schemas/Role'
        members:
          type: array
          description: The members to add to the specified role.
          items:
            $ref: '#/components/schemas/Member'
    RevokeAllPermissionsRequest:
      type: object
      description: >-
        Request to revoke all permissions for specified members on an asset.
      required:
        - members
      properties:
        members:
          type: array
          description: >-
            A list of members to remove from the asset. Owners cannot be
            removed. The authorized user cannot remove themselves.
          items:
            $ref: '#/components/schemas/Member'
    Error:
      type: object
      description: Error response from the API.
      properties:
        error:
          type: object
          properties:
            code:
              type: integer
              description: The HTTP status code.
            message:
              type: string
              description: A human-readable error message.
            status:
              type: string
              description: The error status code.