# Google Bigtable Admin API service configuration

type: google.api.Service
config_version: 3
name: bigtableadmin.googleapis.com
title: Cloud Bigtable Admin API

apis:
- name: google.bigtable.admin.v2.BigtableInstanceAdmin
- name: google.bigtable.admin.v2.BigtableTableAdmin
- name: google.longrunning.Operations

# Additional types which are used as google.protobuf.Any values
types:
- name: google.bigtable.admin.v2.CreateInstanceMetadata
- name: google.bigtable.admin.v2.UpdateClusterMetadata

authentication:
  rules:
    # Unless explicitly weakened, all BigtableInstanceAdmin ops require cluster
    # admin access.
    - selector: google.bigtable.admin.v2.BigtableInstanceAdmin.*,
                google.longrunning.Operations.*
      oauth:
        canonical_scopes: https://www.googleapis.com/auth/bigtable.admin,
                          https://www.googleapis.com/auth/bigtable.admin.cluster,
                          https://www.googleapis.com/auth/bigtable.admin.instance,
                          https://www.googleapis.com/auth/cloud-bigtable.admin,
                          https://www.googleapis.com/auth/cloud-bigtable.admin.cluster,
                          https://www.googleapis.com/auth/cloud-platform
    # BigtableInstanceAdmin Ops which only require read access
    - selector: google.bigtable.admin.v2.BigtableInstanceAdmin.GetCluster,
                google.bigtable.admin.v2.BigtableInstanceAdmin.GetInstance,
                google.bigtable.admin.v2.BigtableInstanceAdmin.ListClusters,
                google.bigtable.admin.v2.BigtableInstanceAdmin.ListInstances,
                google.longrunning.Operations.GetOperation,
                google.longrunning.Operations.ListOperations
      oauth:
        canonical_scopes: https://www.googleapis.com/auth/bigtable.admin,
                          https://www.googleapis.com/auth/bigtable.admin.cluster,
                          https://www.googleapis.com/auth/bigtable.admin.instance,
                          https://www.googleapis.com/auth/cloud-bigtable.admin,
                          https://www.googleapis.com/auth/cloud-bigtable.admin.cluster,
                          https://www.googleapis.com/auth/cloud-platform,
                          https://www.googleapis.com/auth/cloud-platform.read-only

    # Unless explicitly weakened, all BigtableTableAdmin ops require table admin access
    - selector: google.bigtable.admin.v2.BigtableTableAdmin.*
      oauth:
        canonical_scopes: https://www.googleapis.com/auth/bigtable.admin,
                          https://www.googleapis.com/auth/bigtable.admin.table,
                          https://www.googleapis.com/auth/cloud-bigtable.admin,
                          https://www.googleapis.com/auth/cloud-bigtable.admin.table,
                          https://www.googleapis.com/auth/cloud-platform
    # BigtableTableAdmin Ops which only require read access
    - selector: google.bigtable.admin.v2.BigtableTableAdmin.GetTable,
                google.bigtable.admin.v2.BigtableTableAdmin.ListTables
      oauth:
        canonical_scopes: https://www.googleapis.com/auth/bigtable.admin,
                          https://www.googleapis.com/auth/bigtable.admin.table,
                          https://www.googleapis.com/auth/cloud-bigtable.admin,
                          https://www.googleapis.com/auth/cloud-bigtable.admin.table,
                          https://www.googleapis.com/auth/cloud-platform,
                          https://www.googleapis.com/auth/cloud-platform.read-only

# Http override to expose Operations API at v2
http:
  rules:
  - selector: google.longrunning.Operations.GetOperation
    get: '/v2/{name=operations/**}'
  - selector: google.longrunning.Operations.ListOperations
    get: '/v2/{name=operations}'
  - selector: google.longrunning.Operations.CancelOperation
    post: '/v2/{name=operations/**}:cancel'
  - selector: google.longrunning.Operations.DeleteOperation
    delete: '/v2/{name=operations/**}'
