Repository: cloud-custodian/cloud-custodian

Issue:
gcp.service does not support disable action
**Describe the bug**
disable action not working for gcp.service resource type

**To Reproduce**
run the example code found in https://cloudcustodian.io/docs/gcp/resources/service.html

**Expected behavior**
expected an enabled service to be explicitly disabled...   Instead, got a error in the code.

**Background (please complete the following information):**
 - OS: Debian (default GCP OS)
 - Python Version: [e.g. python 3.8.1]
 - Custodian Version: 0.9.8
 - Tool Version: c7n_gcp-0.4.7.dist-info
 - Cloud Provider: gcp
 - Policy: example policy from https://cloudcustodian.io/docs/gcp/resources/service.html
 - Traceback: 
2020-11-18 19:38:59,551: custodian.output:ERROR Error while executing policy
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/c7n/policy.py", line 316, in run
results = a.process(resources)
File "/usr/local/lib/python3.7/dist-packages/c7n_gcp/actions/core.py", line 65, in process
self.process_resource_set(client, model, resource_set)
File "/usr/local/lib/python3.7/dist-packages/c7n_gcp/actions/core.py", line 73, in process_resource_set
result = self.invoke_api(client, op_name, params)
File "/usr/local/lib/python3.7/dist-packages/c7n_gcp/actions/core.py", line 79, in invoke_api
return client.execute_command(op_name, params)
File "/usr/local/lib/python3.7/dist-packages/c7n_gcp/client.py", line 398, in execute_command
request = self._build_request(verb, verb_arguments)
File "/usr/local/lib/python3.7/dist-packages/c7n_gcp/client.py", line 345, in _build_request
method = getattr(self._component, verb)
AttributeError: 'Resource' object has no attribute 'disable'
 - `custodian version --debug` output

**Additional context**
Add any other context about the problem here.



Discussion:
Hi, 
I recently review the documentation, the method is deprecated: https://cloud.google.com/service-infrastructure/docs/service-management/reference/rest/v1/services/disable

This is the new API to disable services: https://cloud.google.com/service-usage/docs/reference/rest/v1/services/disable

I don't known how to create a new resource by myself yet in cloud custodian, so maybe another person could create the new resource

Resolving patch:
diff --git a/tools/c7n_gcp/c7n_gcp/resources/service.py b/tools/c7n_gcp/c7n_gcp/resources/service.py
--- a/tools/c7n_gcp/c7n_gcp/resources/service.py
+++ b/tools/c7n_gcp/c7n_gcp/resources/service.py
@@ -4,30 +4,41 @@
 from c7n_gcp.actions import MethodAction
 from c7n_gcp.provider import resources
 from c7n_gcp.query import QueryResourceManager, TypeInfo
-from c7n.utils import type_schema, local_session
+from c7n.utils import type_schema
 
 
 @resources.register('service')
 class Service(QueryResourceManager):
-    """GCP Service Management
+    """GCP Service Usage Management
+
+    https://cloud.google.com/service-usage/docs/reference/rest
     https://cloud.google.com/service-infrastructure/docs/service-management/reference/rest/v1/services
     """
     class resource_type(TypeInfo):
-        service = 'servicemanagement'
+        service = 'serviceusage'
         version = 'v1'
         component = 'services'
         enum_spec = ('list', 'services[]', None)
         scope = 'project'
-        scope_key = 'consumerId'
-        scope_template = 'project:{}'
-        name = id = 'serviceName'
-        default_report_fields = [name, "producerProjectId"]
+        scope_key = 'parent'
+        scope_template = 'projects/{}'
+        name = id = 'name'
+        default_report_fields = [name, "state"]
         asset_type = 'serviceusage.googleapis.com/Service'
 
         @staticmethod
         def get(client, resource_info):
-            serviceName = resource_info['resourceName'].rsplit('/', 1)[-1][1:-1]
-            return {'serviceName': serviceName}
+            return client.execute_command('get', {'name': resource_info['resourceName']})
+
+    def get_resource_query(self):
+        # https://cloud.google.com/service-usage/docs/reference/rest/v1/services/list
+        # default to just listing enabled services, if we add in support for enabling
+        # services we would want to add some user specified query filtering capability
+        # here, ala
+        # use::
+        #  query:
+        #    - filter: "state:DISABLED"
+        return {'filter': 'state:ENABLED'}
 
 
 @Service.action_registry.register('disable')
@@ -44,18 +55,21 @@ class Disable(MethodAction):
             methods:
              - google.api.servicemanagement.v1.ServiceManagerV1.ActivateServices
           filters:
-           - serviceName: translate.googleapis.com
+           - config.name: translate.googleapis.com
           actions:
            - disable
     """
 
-    schema = type_schema('disable')
+    schema = type_schema(
+        'disable',
+        dependents={'type': 'boolean', 'default': False},
+        usage={'enum': ['SKIP', 'CHECK']})
+
     method_spec = {'op': 'disable'}
-    method_perm = 'update'
 
     def get_resource_params(self, model, resource):
-        session = local_session(self.manager.session_factory)
-        return {'serviceName': resource['serviceName'],
+        return {'name': resource['name'],
                 'body': {
-                    'consumerId': 'project:{}'.format(
-                        session.get_default_project())}}
+                    'disableDependentServices': self.data.get('dependents', False),
+                    'checkIfServiceHasUsage': self.data.get(
+                        'usage', 'CHECK_IF_SERVICE_HAS_USAGE_UNSPECIFIED')}}


Test patch:
diff --git a/tools/c7n_gcp/tests/data/flights/discovery/get-discovery-v1-apis-serviceusage-v1-rest_1.json.bz2 b/tools/c7n_gcp/tests/data/flights/discovery/get-discovery-v1-apis-serviceusage-v1-rest_1.json.bz2
new file mode 100644
Binary files /dev/null and b/tools/c7n_gcp/tests/data/flights/discovery/get-discovery-v1-apis-serviceusage-v1-rest_1.json.bz2 differ
diff --git a/tools/c7n_gcp/tests/data/flights/service-disable/get-v1-projects-cloud-custodian-services_1.json b/tools/c7n_gcp/tests/data/flights/service-disable/get-v1-projects-cloud-custodian-services_1.json
new file mode 100644
--- /dev/null
+++ b/tools/c7n_gcp/tests/data/flights/service-disable/get-v1-projects-cloud-custodian-services_1.json
@@ -0,0 +1,149 @@
+{
+  "headers": {
+    "content-type": "application/json; charset=UTF-8",
+    "vary": "Origin, X-Origin, Referer",
+    "date": "Wed, 02 Dec 2020 14:32:14 GMT",
+    "server": "ESF",
+    "cache-control": "private",
+    "x-xss-protection": "0",
+    "x-frame-options": "SAMEORIGIN",
+    "x-content-type-options": "nosniff",
+    "alt-svc": "h3-29=\":443\"; ma=2592000,h3-T051=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"",
+    "transfer-encoding": "chunked",
+    "status": "200",
+    "content-length": "230339",
+    "-content-encoding": "gzip",
+    "content-location": "https://serviceusage.googleapis.com/v1/projects/cloud-custodian/services?alt=json&pageToken=EkkKR3R5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmFwaS5zZXJ2aWNlbWFuYWdlbWVudC52MS5MaXN0U2VydmljZXNSZXF1ZXN0GqwBQ244S1hadWVpNTZaaW95V2tKSFJtSkNRbUpPYW5vLVdqTkdja0pMX0FQN19fdmZIa1dyX19fOGJnWXlhalltV25KcVNucEdlbUpxU21wR0wwWXlhalltV25KcU14WnVlaTU2WmlveVdrSkhSbUpDUW1KT2Fuby1Xak5HY2tKTF9faEJrSVhuclhGVVZDbm1uVUFCYUN3bGoyRnlNUnI5RDBoQURZSWF6NU9rSA%3D%3D"
+  },
+  "body": {
+    "services": [
+      {
+        "name": "projects/cloud-custodian/services/deploymentmanager.googleapis.com",
+        "config": {
+          "name": "deploymentmanager.googleapis.com",
+          "title": "Cloud Deployment Manager V2 API",
+          "documentation": {
+            "summary": "The Google Cloud Deployment Manager v2 API provides services for configuring, deploying, and\nviewing Google Cloud services and APIs via templates which specify deployments of Cloud\nresources."
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      }
+    ]
+  }
+}
diff --git a/tools/c7n_gcp/tests/data/flights/service-disable/get-v1-services_1.json b/tools/c7n_gcp/tests/data/flights/service-disable/get-v1-services_1.json
deleted file mode 100644
--- a/tools/c7n_gcp/tests/data/flights/service-disable/get-v1-services_1.json
+++ /dev/null
@@ -1,127 +0,0 @@
-{
-  "headers": {
-    "content-type": "application/json; charset=UTF-8",
-    "vary": "Origin, X-Origin, Referer",
-    "date": "Thu, 20 Sep 2018 18:14:44 GMT",
-    "server": "ESF",
-    "cache-control": "private",
-    "x-xss-protection": "1; mode=block",
-    "x-frame-options": "SAMEORIGIN",
-    "x-content-type-options": "nosniff",
-    "alt-svc": "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"",
-    "transfer-encoding": "chunked",
-    "status": "200",
-    "content-length": "3329",
-    "-content-encoding": "gzip",
-    "content-location": "https://servicemanagement.googleapis.com/v1/services?consumerId=project%3Acloud-custodian&alt=json"
-  },
-  "body": {
-    "services": [
-      {
-        "serviceName": "bigquery-json.googleapis.com",
-        "producerProjectId": "google.com:ultra-current-88221"
-      },
-      {
-        "serviceName": "clouddebugger.googleapis.com",
-        "producerProjectId": "google.com:cloud-debugger-producer"
-      },
-      {
-        "serviceName": "datastore.googleapis.com",
-        "producerProjectId": "cloud-datastore-api"
-      },
-      {
-        "serviceName": "source.googleapis.com",
-        "producerProjectId": "google.com:api-project-390876222021"
-      },
-      {
-        "serviceName": "pubsub.googleapis.com",
-        "producerProjectId": "cloud-pubsub-billing"
-      },
-      {
-        "serviceName": "container.googleapis.com",
-        "producerProjectId": "google.com:cloud-kubernetes-devrel"
-      },
-      {
-        "serviceName": "cloudscheduler.googleapis.com",
-        "producerProjectId": "cloud-scheduler-api"
-      },
-      {
-        "serviceName": "logging.googleapis.com",
-        "producerProjectId": "metal-incline-93520"
-      },
-      {
-        "serviceName": "bigtableadmin.googleapis.com",
-        "producerProjectId": "cloud-bigtable"
-      },
-      {
-        "serviceName": "resourceviews.googleapis.com",
-        "producerProjectId": "google.com:prod-default-producer-project"
-      },
-      {
-        "serviceName": "replicapool.googleapis.com",
-        "producerProjectId": "google.com:api-project-861046436738"
-      },
-      {
-        "serviceName": "cloudapis.googleapis.com",
-        "producerProjectId": "google.com:cloudapis-producer"
-      },
-      {
-        "serviceName": "sourcerepo.googleapis.com",
-        "producerProjectId": "google.com:api-project-390876222021"
-      },
-      {
-        "serviceName": "deploymentmanager.googleapis.com",
-        "producerProjectId": "google.com:api-project-596022999904"
-      },
-      {
-        "serviceName": "containerregistry.googleapis.com",
-        "producerProjectId": "containerregistry"
-      },
-      {
-        "serviceName": "monitoring.googleapis.com",
-        "producerProjectId": "google.com:gcm-api-admin"
-      },
-      {
-        "serviceName": "oslogin.googleapis.com",
-        "producerProjectId": "google.com:google-services"
-      },
-      {
-        "serviceName": "compute.googleapis.com",
-        "producerProjectId": "google.com:api-project-539346026206"
-      },
-      {
-        "serviceName": "sql-component.googleapis.com",
-        "producerProjectId": "google.com:prod-default-producer-project"
-      },
-      {
-        "serviceName": "cloudtrace.googleapis.com",
-        "producerProjectId": "cloud-trace-api-producer"
-      },
-      {
-        "serviceName": "servicemanagement.googleapis.com",
-        "producerProjectId": "google.com:steel-binder-818"
-      },
-      {
-        "serviceName": "bigtable.googleapis.com",
-        "producerProjectId": "cloud-bigtable"
-      },
-      {
-        "serviceName": "spanner.googleapis.com",
-        "producerProjectId": "google.com:wrenchworks-api"
-      },
-      {
-        "serviceName": "replicapoolupdater.googleapis.com",
-        "producerProjectId": "google.com:prod-default-producer-project"
-      },
-      {
-        "serviceName": "cloudbuild.googleapis.com",
-        "producerProjectId": "argo-api-producer"
-      },
-      {
-        "serviceName": "cloudfunctions.googleapis.com",
-        "producerProjectId": "gcf-admin"
-      }
-    ],
-    "nextPageToken": "CB4SZApHdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUuYXBpLnNlcnZpY2VtYW5hZ2VtZW50LnYxLkxpc3RTZXJ2aWNlc1JlcXVlc3QSGToXcHJvamVjdDpjbG91ZC1jdXN0b2RpYW4="
-  }
-}
\ No newline at end of file
diff --git a/tools/c7n_gcp/tests/data/flights/service-disable/get-v1-services_2.json b/tools/c7n_gcp/tests/data/flights/service-disable/get-v1-services_2.json
deleted file mode 100644
--- a/tools/c7n_gcp/tests/data/flights/service-disable/get-v1-services_2.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "headers": {
-    "content-type": "application/json; charset=UTF-8",
-    "vary": "Origin, X-Origin, Referer",
-    "date": "Thu, 20 Sep 2018 18:14:45 GMT",
-    "server": "ESF",
-    "cache-control": "private",
-    "x-xss-protection": "1; mode=block",
-    "x-frame-options": "SAMEORIGIN",
-    "x-content-type-options": "nosniff",
-    "alt-svc": "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"",
-    "transfer-encoding": "chunked",
-    "status": "200",
-    "content-length": "541",
-    "-content-encoding": "gzip",
-    "content-location": "https://servicemanagement.googleapis.com/v1/services?consumerId=project%3Acloud-custodian&alt=json&pageToken=CB4SZApHdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUuYXBpLnNlcnZpY2VtYW5hZ2VtZW50LnYxLkxpc3RTZXJ2aWNlc1JlcXVlc3QSGToXcHJvamVjdDpjbG91ZC1jdXN0b2RpYW4%3D"
-  },
-  "body": {
-    "services": [
-      {
-        "serviceName": "storage-api.googleapis.com",
-        "producerProjectId": "cloud-storage-producer"
-      },
-      {
-        "serviceName": "stackdriver.googleapis.com",
-        "producerProjectId": "google.com:stackdriver-metadata"
-      },
-      {
-        "serviceName": "stackdriverprovisioning.googleapis.com",
-        "producerProjectId": "google.com:stackdriver-metadata"
-      },
-      {
-        "serviceName": "storage-component.googleapis.com",
-        "producerProjectId": "google.com:prod-default-producer-project"
-      }
-    ]
-  }
-}
\ No newline at end of file
diff --git a/tools/c7n_gcp/tests/data/flights/service-disable/post-v1-projects-cloud-custodian-services-deploymentmanager.googleapis.com-disable_1.json b/tools/c7n_gcp/tests/data/flights/service-disable/post-v1-projects-cloud-custodian-services-deploymentmanager.googleapis.com-disable_1.json
new file mode 100644
--- /dev/null
+++ b/tools/c7n_gcp/tests/data/flights/service-disable/post-v1-projects-cloud-custodian-services-deploymentmanager.googleapis.com-disable_1.json
@@ -0,0 +1,23 @@
+{
+  "headers": {
+    "content-type": "application/json; charset=UTF-8",
+    "vary": "Origin, X-Origin, Referer",
+    "date": "Wed, 02 Dec 2020 14:32:16 GMT",
+    "server": "ESF",
+    "cache-control": "private",
+    "x-xss-protection": "0",
+    "x-frame-options": "SAMEORIGIN",
+    "x-content-type-options": "nosniff",
+    "alt-svc": "h3-29=\":443\"; ma=2592000,h3-T051=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"",
+    "transfer-encoding": "chunked",
+    "status": "200",
+    "content-length": "144",
+    "-content-encoding": "gzip"
+  },
+  "body": {
+    "name": "operations/acf.429360b5-fca0-4081-a5ee-6976c935e7bf",
+    "metadata": {
+      "@type": "type.googleapis.com/google.protobuf.Any"
+    }
+  }
+}
\ No newline at end of file
diff --git a/tools/c7n_gcp/tests/data/flights/service-disable/post-v1-services-deploymentmanager.googleapis.com-disable_1.json b/tools/c7n_gcp/tests/data/flights/service-disable/post-v1-services-deploymentmanager.googleapis.com-disable_1.json
deleted file mode 100644
--- a/tools/c7n_gcp/tests/data/flights/service-disable/post-v1-services-deploymentmanager.googleapis.com-disable_1.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "headers": {
-    "content-type": "application/json; charset=UTF-8",
-    "vary": "Origin, X-Origin, Referer",
-    "date": "Thu, 20 Sep 2018 18:14:47 GMT",
-    "server": "ESF",
-    "cache-control": "private",
-    "x-xss-protection": "1; mode=block",
-    "x-frame-options": "SAMEORIGIN",
-    "x-content-type-options": "nosniff",
-    "alt-svc": "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"",
-    "transfer-encoding": "chunked",
-    "status": "200",
-    "content-length": "287",
-    "-content-encoding": "gzip"
-  },
-  "body": {
-    "name": "operations/tmo-acf.d8ce238b-c92f-4d05-8fe1-8d10c981ca0e",
-    "metadata": {
-      "@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
-      "resourceNames": [
-        "services/deploymentmanager.googleapis.com/projectSettings/604150802624"
-      ]
-    }
-  }
-}
\ No newline at end of file
diff --git a/tools/c7n_gcp/tests/data/flights/service-get/empty.txt b/tools/c7n_gcp/tests/data/flights/service-get/empty.txt
deleted file mode 100644
--- a/tools/c7n_gcp/tests/data/flights/service-get/empty.txt
+++ /dev/null
@@ -1 +0,0 @@
-# intentionally empty
diff --git a/tools/c7n_gcp/tests/data/flights/service-get/get-v1-projects-cloud-custodian-services-deploymentmanager.googleapis.com_1.json b/tools/c7n_gcp/tests/data/flights/service-get/get-v1-projects-cloud-custodian-services-deploymentmanager.googleapis.com_1.json
new file mode 100644
--- /dev/null
+++ b/tools/c7n_gcp/tests/data/flights/service-get/get-v1-projects-cloud-custodian-services-deploymentmanager.googleapis.com_1.json
@@ -0,0 +1,1324 @@
+{
+  "headers": {
+    "content-type": "application/json; charset=UTF-8",
+    "vary": "Origin, X-Origin, Referer",
+    "date": "Wed, 02 Dec 2020 14:53:55 GMT",
+    "server": "ESF",
+    "cache-control": "private",
+    "x-xss-protection": "0",
+    "x-frame-options": "SAMEORIGIN",
+    "x-content-type-options": "nosniff",
+    "alt-svc": "h3-29=\":443\"; ma=2592000,h3-T051=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"",
+    "transfer-encoding": "chunked",
+    "status": "200",
+    "content-length": "44195",
+    "-content-encoding": "gzip",
+    "content-location": "https://serviceusage.googleapis.com/v1/projects/cloud-custodian/services/deploymentmanager.googleapis.com?alt=json"
+  },
+  "body": {
+    "name": "projects/cloud-custodian/services/deploymentmanager.googleapis.com",
+    "config": {
+      "name": "deploymentmanager.googleapis.com",
+      "title": "Cloud Deployment Manager V2 API",
+      "apis": [
+        {
+          "name": "google.discovery.Discovery",
+          "methods": [
+            {
+              "name": "GetDiscovery"
+            },
+            {
+              "name": "GetDiscoveryRest"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.dogfood.CompositeTypesService",
+          "methods": [
+            {
+              "name": "Insert"
+            },
+            {
+              "name": "Update"
+            },
+            {
+              "name": "Patch"
+            },
+            {
+              "name": "Delete"
+            },
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2beta.CompositeTypesService",
+          "methods": [
+            {
+              "name": "Insert"
+            },
+            {
+              "name": "Update"
+            },
+            {
+              "name": "Patch"
+            },
+            {
+              "name": "Delete"
+            },
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v2beta"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.alpha.CompositeTypesService",
+          "methods": [
+            {
+              "name": "Insert"
+            },
+            {
+              "name": "Update"
+            },
+            {
+              "name": "Patch"
+            },
+            {
+              "name": "Delete"
+            },
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.dogfood.DeploymentsService",
+          "methods": [
+            {
+              "name": "Insert"
+            },
+            {
+              "name": "Update"
+            },
+            {
+              "name": "Patch"
+            },
+            {
+              "name": "Delete"
+            },
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            },
+            {
+              "name": "CancelPreview"
+            },
+            {
+              "name": "Stop"
+            },
+            {
+              "name": "GetPolicy"
+            },
+            {
+              "name": "SetPolicy"
+            },
+            {
+              "name": "TestPermissions"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2beta.DeploymentsService",
+          "methods": [
+            {
+              "name": "Insert"
+            },
+            {
+              "name": "Update"
+            },
+            {
+              "name": "Patch"
+            },
+            {
+              "name": "Delete"
+            },
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            },
+            {
+              "name": "CancelPreview"
+            },
+            {
+              "name": "Stop"
+            },
+            {
+              "name": "GetPolicy"
+            },
+            {
+              "name": "SetPolicy"
+            },
+            {
+              "name": "TestPermissions"
+            }
+          ],
+          "version": "v2beta"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2.DeploymentsService",
+          "methods": [
+            {
+              "name": "Insert"
+            },
+            {
+              "name": "Update"
+            },
+            {
+              "name": "Patch"
+            },
+            {
+              "name": "Delete"
+            },
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            },
+            {
+              "name": "CancelPreview"
+            },
+            {
+              "name": "Stop"
+            },
+            {
+              "name": "GetPolicy"
+            },
+            {
+              "name": "SetPolicy"
+            },
+            {
+              "name": "TestPermissions"
+            }
+          ],
+          "version": "v2"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.alpha.DeploymentsService",
+          "methods": [
+            {
+              "name": "Insert"
+            },
+            {
+              "name": "Update"
+            },
+            {
+              "name": "Patch"
+            },
+            {
+              "name": "Delete"
+            },
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            },
+            {
+              "name": "CancelPreview"
+            },
+            {
+              "name": "Stop"
+            },
+            {
+              "name": "GetPolicy"
+            },
+            {
+              "name": "SetPolicy"
+            },
+            {
+              "name": "TestPermissions"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.dogfood.ManifestsService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2beta.ManifestsService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v2beta"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2.ManifestsService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v2"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.alpha.ManifestsService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.dogfood.OperationsService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2beta.OperationsService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v2beta"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2.OperationsService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v2"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.alpha.OperationsService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.dogfood.ResourcesService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2beta.ResourcesService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v2beta"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2.ResourcesService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v2"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.alpha.ResourcesService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.dogfood.TypeProvidersService",
+          "methods": [
+            {
+              "name": "Insert"
+            },
+            {
+              "name": "Update"
+            },
+            {
+              "name": "Patch"
+            },
+            {
+              "name": "Delete"
+            },
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            },
+            {
+              "name": "ListTypes"
+            },
+            {
+              "name": "GetType"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2beta.TypeProvidersService",
+          "methods": [
+            {
+              "name": "Insert"
+            },
+            {
+              "name": "Update"
+            },
+            {
+              "name": "Patch"
+            },
+            {
+              "name": "Delete"
+            },
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            },
+            {
+              "name": "ListTypes"
+            },
+            {
+              "name": "GetType"
+            }
+          ],
+          "version": "v2beta"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.alpha.TypeProvidersService",
+          "methods": [
+            {
+              "name": "Insert"
+            },
+            {
+              "name": "Update"
+            },
+            {
+              "name": "Patch"
+            },
+            {
+              "name": "Delete"
+            },
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            },
+            {
+              "name": "ListTypes"
+            },
+            {
+              "name": "GetType"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.dogfood.TypesService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "GetInfo"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v1"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2beta.TypesService",
+          "methods": [
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v2beta"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.v2.TypesService",
+          "methods": [
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v2"
+        },
+        {
+          "name": "cloud.config.frontend.proto.mixer.alpha.TypesService",
+          "methods": [
+            {
+              "name": "Get"
+            },
+            {
+              "name": "List"
+            }
+          ],
+          "version": "v1"
+        }
+      ],
+      "documentation": {
+        "summary": "The Google Cloud Deployment Manager v2 API provides services for configuring, deploying, and\nviewing Google Cloud services and APIs via templates which specify deployments of Cloud\nresources."
+      },
+      "quota": {
+        "limits": [
+          {
+            "name": "googleServicesPerDayPerProject",
+            "metric": "deploymentmanager.googleapis.com/google_services",
+            "unit": "1/d/{project}",
+            "values": {
+              "DEFAULT": "0"
+            }
+          },
+          {
+            "name": "defaultPerDayPerProject",
+            "metric": "deploymentmanager.googleapis.com/default",
+            "unit": "1/d/{project}",
+            "values": {
+              "DEFAULT": "-1"
+            }
+          },
+          {
+            "name": "defaultPerMinutePerUser",
+            "metric": "deploymentmanager.googleapis.com/default",
+            "unit": "1/min/{project}/{user}",
+            "values": {
+              "DEFAULT": "1200"
+            }
+          },
+          {
+            "name": "defaultPerMinutePerProject",
+            "metric": "deploymentmanager.googleapis.com/default",
+            "unit": "1/min/{project}",
+            "values": {
+              "DEFAULT": "1200"
+            }
+          },
+          {
+            "name": "deploymentMutatorsPerDayPerProject",
+            "metric": "deploymentmanager.googleapis.com/deployment_mutators",
+            "unit": "1/d/{project}",
+            "values": {
+              "DEFAULT": "1000"
+            }
+          },
+          {
+            "name": "deploymentMutatorsPerMinutePerUser",
+            "metric": "deploymentmanager.googleapis.com/deployment_mutators",
+            "unit": "1/min/{project}/{user}",
+            "values": {
+              "DEFAULT": "1200"
+            }
+          },
+          {
+            "name": "deploymentMutatorsPerMinutePerProject",
+            "metric": "deploymentmanager.googleapis.com/deployment_mutators",
+            "unit": "1/min/{project}",
+            "values": {
+              "DEFAULT": "1200"
+            }
+          }
+        ]
+      },
+      "authentication": {
+        "rules": [
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/ndev.cloudman"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          },
+          {
+            "oauth": {
+              "canonicalScopes": "https://www.googleapis.com/auth/cloud-platform,\nhttps://www.googleapis.com/auth/cloud-platform.read-only,\nhttps://www.googleapis.com/auth/ndev.cloudman,\nhttps://www.googleapis.com/auth/ndev.cloudman.readonly"
+            }
+          }
+        ]
+      },
+      "usage": {
+        "requirements": [
+          "serviceusage.googleapis.com/tos/cloud"
+        ]
+      },
+      "endpoints": [
+        {
+          "name": "deploymentmanager.googleapis.com"
+        },
+        {
+          "name": "deploymentmanager.clients6.google.com"
+        },
+        {
+          "name": "content-deploymentmanager.googleapis.com"
+        }
+      ],
+      "monitoredResources": [
+        {
+          "type": "serviceruntime.googleapis.com/api",
+          "labels": [
+            {
+              "key": "cloud.googleapis.com/location"
+            },
+            {
+              "key": "cloud.googleapis.com/uid"
+            },
+            {
+              "key": "serviceruntime.googleapis.com/api_version"
+            },
+            {
+              "key": "serviceruntime.googleapis.com/api_method"
+            },
+            {
+              "key": "serviceruntime.googleapis.com/consumer_project"
+            },
+            {
+              "key": "cloud.googleapis.com/project"
+            },
+            {
+              "key": "cloud.googleapis.com/service"
+            }
+          ]
+        },
+        {
+          "type": "serviceruntime.googleapis.com/consumer_quota",
+          "labels": [
+            {
+              "key": "cloud.googleapis.com/location"
+            },
+            {
+              "key": "cloud.googleapis.com/uid"
+            },
+            {
+              "key": "cloud.googleapis.com/service"
+            },
+            {
+              "key": "cloud.googleapis.com/resource_id"
+            },
+            {
+              "key": "cloud.googleapis.com/resource_node"
+            },
+            {
+              "key": "cloud.googleapis.com/quota_metric"
+            },
+            {
+              "key": "cloud.googleapis.com/quota_location"
+            }
+          ]
+        },
+        {
+          "type": "serviceruntime.googleapis.com/producer_quota",
+          "labels": [
+            {
+              "key": "cloud.googleapis.com/location"
+            },
+            {
+              "key": "cloud.googleapis.com/uid"
+            },
+            {
+              "key": "cloud.googleapis.com/service"
+            },
+            {
+              "key": "cloud.googleapis.com/resource_id"
+            },
+            {
+              "key": "cloud.googleapis.com/resource_node"
+            },
+            {
+              "key": "cloud.googleapis.com/consumer_resource_node"
+            },
+            {
+              "key": "cloud.googleapis.com/quota_metric"
+            },
+            {
+              "key": "cloud.googleapis.com/quota_location"
+            }
+          ]
+        }
+      ],
+      "monitoring": {
+        "consumerDestinations": [
+          {
+            "monitoredResource": "serviceruntime.googleapis.com/api",
+            "metrics": [
+              "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+              "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+              "serviceruntime.googleapis.com/quota/used",
+              "serviceruntime.googleapis.com/quota/limit",
+              "serviceruntime.googleapis.com/quota/exceeded",
+              "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+            ]
+          },
+          {
+            "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+            "metrics": [
+              "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+              "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+              "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+              "serviceruntime.googleapis.com/quota/consumer/limit",
+              "serviceruntime.googleapis.com/quota/consumer/exceeded"
+            ]
+          }
+        ]
+      }
+    },
+    "state": "DISABLED",
+    "parent": "projects/926761696986"
+  }
+}
\ No newline at end of file
diff --git a/tools/c7n_gcp/tests/data/flights/service-query/get-v1-projects-cloud-custodian-services_1.json b/tools/c7n_gcp/tests/data/flights/service-query/get-v1-projects-cloud-custodian-services_1.json
new file mode 100644
--- /dev/null
+++ b/tools/c7n_gcp/tests/data/flights/service-query/get-v1-projects-cloud-custodian-services_1.json
@@ -0,0 +1,2050 @@
+{
+  "headers": {
+    "content-type": "application/json; charset=UTF-8",
+    "vary": "Origin, X-Origin, Referer",
+    "date": "Wed, 02 Dec 2020 14:54:50 GMT",
+    "server": "ESF",
+    "cache-control": "private",
+    "x-xss-protection": "0",
+    "x-frame-options": "SAMEORIGIN",
+    "x-content-type-options": "nosniff",
+    "alt-svc": "h3-29=\":443\"; ma=2592000,h3-T051=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"",
+    "transfer-encoding": "chunked",
+    "status": "200",
+    "content-length": "72017",
+    "-content-encoding": "gzip",
+    "content-location": "https://serviceusage.googleapis.com/v1/projects/cloud-custodian/services?filter=state%3AENABLED&alt=json"
+  },
+  "body": {
+    "services": [
+      {
+        "name": "projects/cloud-custodian/services/bigquery.googleapis.com",
+        "config": {
+          "name": "bigquery.googleapis.com",
+          "title": "BigQuery API",
+          "documentation": {
+            "summary": "A data platform for customers to create, manage, share and query data."
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/request_count",
+                  "serviceruntime.googleapis.com/api/consumer/error_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/api/consumer/total_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_overhead_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/backend_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/response_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user_country",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_referer",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/bigquerystorage.googleapis.com",
+        "config": {
+          "name": "bigquerystorage.googleapis.com",
+          "title": "BigQuery Storage API",
+          "documentation": {},
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/request_count",
+                  "serviceruntime.googleapis.com/api/consumer/error_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/api/consumer/total_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_overhead_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/backend_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/response_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user_country",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_referer",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/cloudapis.googleapis.com",
+        "config": {
+          "name": "cloudapis.googleapis.com",
+          "title": "Google Cloud APIs",
+          "documentation": {
+            "summary": "This is a meta service for Google Cloud APIs for convenience. Enabling this service enables all commonly used Google Cloud APIs for the project. By default, it is enabled for all projects created through Google Cloud Console and Google Cloud SDK, and should be manually enabled for all other projects that intend to use Google Cloud APIs. Note: disabling this service has no effect on other services.\n"
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoring": {}
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/clouddebugger.googleapis.com",
+        "config": {
+          "name": "clouddebugger.googleapis.com",
+          "title": "Cloud Debugger API",
+          "documentation": {
+            "summary": "Examines the call stack and variables of a running application without stopping or slowing it down.\n"
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/cloudtrace.googleapis.com",
+        "config": {
+          "name": "cloudtrace.googleapis.com",
+          "title": "Cloud Trace API",
+          "documentation": {
+            "summary": "Sends application trace data to Cloud Trace for viewing. Trace data is collected for all App Engine applications by default. Trace data from other applications can be provided using this API. This library is used to interact with the Cloud Trace API directly. If you are looking to instrument your application for Cloud Trace, we recommend using OpenCensus.\n"
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "cloudtrace.googleapis.com/charged_project",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "monitoring.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                }
+              ]
+            },
+            {
+              "type": "cloudtrace.googleapis.com/CloudtraceProject",
+              "displayName": "Cloud Trace",
+              "description": "Cloud trace resource, e.g. project.",
+              "labels": [
+                {
+                  "key": "resource_container",
+                  "description": "The identifier of the GCP container associated with the resource."
+                },
+                {
+                  "key": "location",
+                  "description": "The location that the Cloud Trace service recording the metrics is running."
+                }
+              ],
+              "launchStage": "EARLY_ACCESS"
+            },
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "cloudtrace.googleapis.com/charged_project",
+                "metrics": [
+                  "cloudtrace.googleapis.com/billing/ingested_spans",
+                  "cloudtrace.googleapis.com/billing/retrieved_spans"
+                ]
+              },
+              {
+                "monitoredResource": "cloudtrace.googleapis.com/CloudtraceProject",
+                "metrics": [
+                  "cloudtrace.googleapis.com/internal/plugin_server_span_count",
+                  "cloudtrace.googleapis.com/internal/reader_root_query_count",
+                  "cloudtrace.googleapis.com/internal/reader_root_query_latencies",
+                  "cloudtrace.googleapis.com/bigquery_export/exported_span_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/datastore.googleapis.com",
+        "config": {
+          "name": "datastore.googleapis.com",
+          "title": "Cloud Datastore API",
+          "documentation": {
+            "summary": "Accesses the schemaless NoSQL database to provide fully managed, robust, scalable storage for your application.\n"
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/request_count",
+                  "serviceruntime.googleapis.com/api/consumer/error_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/api/consumer/total_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_overhead_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/backend_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/response_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user_country",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_referer",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/logging.googleapis.com",
+        "config": {
+          "name": "logging.googleapis.com",
+          "title": "Cloud Logging API",
+          "documentation": {
+            "summary": "Writes log entries and manages your Cloud Logging configuration.\nThe table entries below are presented in alphabetical order, not in order of common use. For explanations of the concepts found in the table entries, read the documentation at https://cloud.google.com/logging/docs."
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "logging.googleapis.com/charged_project",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "monitoring.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "logging.googleapis.com/charged_project",
+                "metrics": [
+                  "logging.googleapis.com/billing/ingested_bytes"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/monitoring.googleapis.com",
+        "config": {
+          "name": "monitoring.googleapis.com",
+          "title": "Cloud Monitoring API",
+          "documentation": {
+            "summary": "Manages your Cloud Monitoring data and configurations. Most projects must be associated with a Workspace, with a few exceptions as noted on the individual method pages.\nThe table entries below are presented in alphabetical order, not in order of common use. For explanations of the concepts found in the table entries, read the [Cloud Monitoring documentation](/monitoring/docs).\n"
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "monitoring.googleapis.com/ChargedProject",
+              "displayName": "Cloud monitoring target",
+              "description": "A cloud monitoring specialization target schema of cloud.ChargedProject.",
+              "labels": [
+                {
+                  "key": "resource_container",
+                  "description": "The monitored resource container. Could be project, workspace, etc."
+                },
+                {
+                  "key": "location",
+                  "description": "The service-specific notion of location."
+                },
+                {
+                  "key": "service",
+                  "description": "The name of the API service with which the data is associated (e.g.,'monitoring.googleapis.com')."
+                }
+              ],
+              "launchStage": "ALPHA"
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "monitoring.googleapis.com/ChargedProject",
+                "metrics": [
+                  "monitoring.googleapis.com/billing/bytes_ingested"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/pubsub.googleapis.com",
+        "config": {
+          "name": "pubsub.googleapis.com",
+          "title": "Cloud Pub/Sub API",
+          "documentation": {
+            "summary": "Provides reliable, many-to-many, asynchronous messaging between applications.\n"
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/servicemanagement.googleapis.com",
+        "config": {
+          "name": "servicemanagement.googleapis.com",
+          "title": "Service Management API",
+          "documentation": {
+            "summary": "Google Service Management allows service producers to publish their services on Google Cloud Platform so that they can be discovered and used by service consumers."
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/serviceusage.googleapis.com",
+        "config": {
+          "name": "serviceusage.googleapis.com",
+          "title": "Service Usage API",
+          "documentation": {
+            "summary": "Enables services that service consumers want to use on Google Cloud Platform, lists the available or enabled services, or disables services that service consumers no longer use."
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/source.googleapis.com",
+        "config": {
+          "name": "source.googleapis.com",
+          "title": "Legacy Cloud Source Repositories API",
+          "documentation": {
+            "summary": "Access source code repositories hosted by Google."
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/request_count",
+                  "serviceruntime.googleapis.com/api/consumer/error_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/api/consumer/total_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_overhead_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/backend_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/response_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user_country",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_referer",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/sql-component.googleapis.com",
+        "config": {
+          "name": "sql-component.googleapis.com",
+          "title": "Cloud SQL",
+          "documentation": {
+            "summary": "Google Cloud SQL is a hosted and fully managed relational database service\n    on Google's infrastructure."
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/request_count",
+                  "serviceruntime.googleapis.com/api/consumer/error_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/api/consumer/total_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_overhead_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/backend_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/response_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user_country",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_referer",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/storage-api.googleapis.com",
+        "config": {
+          "name": "storage-api.googleapis.com",
+          "title": "Google Cloud Storage JSON API",
+          "documentation": {
+            "summary": "Lets you store and retrieve potentially-large, immutable data objects."
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoring": {}
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/storage-component.googleapis.com",
+        "config": {
+          "name": "storage-component.googleapis.com",
+          "title": "Cloud Storage",
+          "documentation": {
+            "summary": "Google Cloud Storage is a RESTful service for storing and accessing your data on Google's\n    infrastructure."
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/request_count",
+                  "serviceruntime.googleapis.com/api/consumer/error_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/api/consumer/total_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_overhead_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/backend_latencies",
+                  "serviceruntime.googleapis.com/api/consumer/request_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/response_sizes",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_end_user_country",
+                  "serviceruntime.googleapis.com/api/consumer/top_request_count_by_referer",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      },
+      {
+        "name": "projects/cloud-custodian/services/storage.googleapis.com",
+        "config": {
+          "name": "storage.googleapis.com",
+          "title": "Cloud Storage API",
+          "documentation": {
+            "summary": "Lets you store and retrieve potentially-large, immutable data objects."
+          },
+          "quota": {},
+          "authentication": {},
+          "usage": {
+            "requirements": [
+              "serviceusage.googleapis.com/tos/cloud"
+            ]
+          },
+          "monitoredResources": [
+            {
+              "type": "storage.googleapis.com/StorageLocation",
+              "displayName": "Storage Location of GCS Buckets",
+              "description": "Storage Location of GCS Buckets.",
+              "labels": [
+                {
+                  "key": "resource_container",
+                  "description": "The project number of the bucket."
+                },
+                {
+                  "key": "location",
+                  "description": "The storage location of the bucket."
+                }
+              ],
+              "launchStage": "EARLY_ACCESS"
+            },
+            {
+              "type": "storage.googleapis.com/storage",
+              "labels": [
+                {
+                  "key": "storage.googleapis.com/bucket_name"
+                },
+                {
+                  "key": "storage.googleapis.com/bucket_storage_class"
+                },
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/api",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_version"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/api_method"
+                },
+                {
+                  "key": "serviceruntime.googleapis.com/consumer_project"
+                },
+                {
+                  "key": "cloud.googleapis.com/project"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/consumer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            },
+            {
+              "type": "serviceruntime.googleapis.com/producer_quota",
+              "labels": [
+                {
+                  "key": "cloud.googleapis.com/location"
+                },
+                {
+                  "key": "cloud.googleapis.com/uid"
+                },
+                {
+                  "key": "cloud.googleapis.com/service"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_id"
+                },
+                {
+                  "key": "cloud.googleapis.com/resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/consumer_resource_node"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_metric"
+                },
+                {
+                  "key": "cloud.googleapis.com/quota_location"
+                }
+              ]
+            }
+          ],
+          "monitoring": {
+            "consumerDestinations": [
+              {
+                "monitoredResource": "storage.googleapis.com/storage",
+                "metrics": [
+                  "storage.googleapis.com/storage/total_bytes",
+                  "storage.googleapis.com/storage/object_count"
+                ]
+              },
+              {
+                "monitoredResource": "storage.googleapis.com/StorageLocation",
+                "metrics": [
+                  "storage.googleapis.com/quota/in_multi_region_read_bandwidth_preview/usage",
+                  "storage.googleapis.com/quota/in_multi_region_read_bandwidth_preview/limit",
+                  "storage.googleapis.com/quota/in_multi_region_read_bandwidth_preview/exceeded",
+                  "storage.googleapis.com/quota/in_multi_region_read_bandwidth/usage",
+                  "storage.googleapis.com/quota/in_multi_region_read_bandwidth/limit",
+                  "storage.googleapis.com/quota/in_multi_region_read_bandwidth/exceeded"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/api",
+                "metrics": [
+                  "serviceruntime.googleapis.com/api/consumer/quota_used_count",
+                  "serviceruntime.googleapis.com/api/consumer/quota_refund_count",
+                  "serviceruntime.googleapis.com/quota/used",
+                  "serviceruntime.googleapis.com/quota/limit",
+                  "serviceruntime.googleapis.com/quota/exceeded",
+                  "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+                ]
+              },
+              {
+                "monitoredResource": "serviceruntime.googleapis.com/consumer_quota",
+                "metrics": [
+                  "serviceruntime.googleapis.com/quota/rate/consumer/used_count",
+                  "serviceruntime.googleapis.com/quota/rate/consumer/refund_count",
+                  "serviceruntime.googleapis.com/quota/allocation/consumer/usage",
+                  "serviceruntime.googleapis.com/quota/consumer/limit",
+                  "serviceruntime.googleapis.com/quota/consumer/exceeded"
+                ]
+              }
+            ]
+          }
+        },
+        "state": "ENABLED",
+        "parent": "projects/926761696986"
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/tools/c7n_gcp/tests/data/flights/service-query/get-v1-services_1.json b/tools/c7n_gcp/tests/data/flights/service-query/get-v1-services_1.json
deleted file mode 100644
--- a/tools/c7n_gcp/tests/data/flights/service-query/get-v1-services_1.json
+++ /dev/null
@@ -1,126 +0,0 @@
-{
-  "headers": {
-    "content-type": "application/json; charset=UTF-8",
-    "vary": "Origin, X-Origin, Referer",
-    "date": "Thu, 20 Sep 2018 18:18:28 GMT",
-    "server": "ESF",
-    "cache-control": "private",
-    "x-xss-protection": "1; mode=block",
-    "x-frame-options": "SAMEORIGIN",
-    "x-content-type-options": "nosniff",
-    "alt-svc": "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"",
-    "transfer-encoding": "chunked",
-    "status": "200",
-    "content-length": "3143",
-    "-content-encoding": "gzip",
-    "content-location": "https://servicemanagement.googleapis.com/v1/services?consumerId=project%3Acloud-custodian&alt=json"
-  },
-  "body": {
-    "services": [
-      {
-        "serviceName": "bigquery-json.googleapis.com",
-        "producerProjectId": "google.com:ultra-current-88221"
-      },
-      {
-        "serviceName": "clouddebugger.googleapis.com",
-        "producerProjectId": "google.com:cloud-debugger-producer"
-      },
-      {
-        "serviceName": "datastore.googleapis.com",
-        "producerProjectId": "cloud-datastore-api"
-      },
-      {
-        "serviceName": "source.googleapis.com",
-        "producerProjectId": "google.com:api-project-390876222021"
-      },
-      {
-        "serviceName": "storage-component.googleapis.com",
-        "producerProjectId": "google.com:prod-default-producer-project"
-      },
-      {
-        "serviceName": "pubsub.googleapis.com",
-        "producerProjectId": "cloud-pubsub-billing"
-      },
-      {
-        "serviceName": "container.googleapis.com",
-        "producerProjectId": "google.com:cloud-kubernetes-devrel"
-      },
-      {
-        "serviceName": "storage-api.googleapis.com",
-        "producerProjectId": "cloud-storage-producer"
-      },
-      {
-        "serviceName": "cloudscheduler.googleapis.com",
-        "producerProjectId": "cloud-scheduler-api"
-      },
-      {
-        "serviceName": "stackdriver.googleapis.com",
-        "producerProjectId": "google.com:stackdriver-metadata"
-      },
-      {
-        "serviceName": "logging.googleapis.com",
-        "producerProjectId": "metal-incline-93520"
-      },
-      {
-        "serviceName": "bigtableadmin.googleapis.com",
-        "producerProjectId": "cloud-bigtable"
-      },
-      {
-        "serviceName": "cloudapis.googleapis.com",
-        "producerProjectId": "google.com:cloudapis-producer"
-      },
-      {
-        "serviceName": "sourcerepo.googleapis.com",
-        "producerProjectId": "google.com:api-project-390876222021"
-      },
-      {
-        "serviceName": "containerregistry.googleapis.com",
-        "producerProjectId": "containerregistry"
-      },
-      {
-        "serviceName": "monitoring.googleapis.com",
-        "producerProjectId": "google.com:gcm-api-admin"
-      },
-      {
-        "serviceName": "oslogin.googleapis.com",
-        "producerProjectId": "google.com:google-services"
-      },
-      {
-        "serviceName": "stackdriverprovisioning.googleapis.com",
-        "producerProjectId": "google.com:stackdriver-metadata"
-      },
-      {
-        "serviceName": "compute.googleapis.com",
-        "producerProjectId": "google.com:api-project-539346026206"
-      },
-      {
-        "serviceName": "sql-component.googleapis.com",
-        "producerProjectId": "google.com:prod-default-producer-project"
-      },
-      {
-        "serviceName": "cloudtrace.googleapis.com",
-        "producerProjectId": "cloud-trace-api-producer"
-      },
-      {
-        "serviceName": "servicemanagement.googleapis.com",
-        "producerProjectId": "google.com:steel-binder-818"
-      },
-      {
-        "serviceName": "bigtable.googleapis.com",
-        "producerProjectId": "cloud-bigtable"
-      },
-      {
-        "serviceName": "spanner.googleapis.com",
-        "producerProjectId": "google.com:wrenchworks-api"
-      },
-      {
-        "serviceName": "cloudbuild.googleapis.com",
-        "producerProjectId": "argo-api-producer"
-      },
-      {
-        "serviceName": "cloudfunctions.googleapis.com",
-        "producerProjectId": "gcf-admin"
-      }
-    ]
-  }
-}
\ No newline at end of file
diff --git a/tools/c7n_gcp/tests/test_service.py b/tools/c7n_gcp/tests/test_service.py
--- a/tools/c7n_gcp/tests/test_service.py
+++ b/tools/c7n_gcp/tests/test_service.py
@@ -13,7 +13,7 @@ def test_service_query(self):
              'resource': 'gcp.service'},
             session_factory=factory)
         resources = p.run()
-        self.assertEqual(len(resources), 26)
+        self.assertEqual(len(resources), 16)
 
     def test_service_disable(self):
         factory = self.replay_flight_data('service-disable')
@@ -21,14 +21,12 @@ def test_service_disable(self):
             {'name': 'disable-service',
              'resource': 'gcp.service',
              'filters': [
-                 {'serviceName': 'deploymentmanager.googleapis.com'}],
+                 {'config.name': 'deploymentmanager.googleapis.com'}],
              'actions': ['disable']},
             session_factory=factory)
         resources = p.run()
         self.assertEqual(len(resources), 1)
-        self.assertEqual(
-            resources[0]['serviceName'],
-            'deploymentmanager.googleapis.com')
+        self.assertJmes('config.name', resources[0], 'deploymentmanager.googleapis.com')
 
     def test_service_get(self):
         factory = self.replay_flight_data('service-get')
@@ -36,9 +34,5 @@ def test_service_get(self):
             {'name': 'one-service', 'resource': 'gcp.service'},
             session_factory=factory)
         service = p.resource_manager.get_resource(
-            {'resourceName': (
-                'projects/604150802624/'
-                'services/[deploymentmanager.googleapis.com]')})
-        self.assertEqual(
-            service, {
-                'serviceName': 'deploymentmanager.googleapis.com'})
+            {'resourceName': 'projects/stacklet-sam/services/deploymentmanager.googleapis.com'})
+        self.assertJmes('config.name', service, 'deploymentmanager.googleapis.com')