python-service-builder 1.1.0__tar.gz → 1.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/PKG-INFO +4 -2
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/pyproject.toml +19 -17
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/python_service_builder.egg-info/PKG-INFO +4 -2
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/python_service_builder.egg-info/requires.txt +2 -0
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/service_framework/__init_test.py +3 -3
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/service_framework/list_services.py +29 -7
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/service_framework/service_builder.py +2 -7
- python_service_builder-1.2.1/service_framework/services.py +374 -0
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/service_framework/services_test.py +0 -1
- python_service_builder-1.1.0/service_framework/services.py +0 -453
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/README.md +0 -0
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/python_service_builder.egg-info/SOURCES.txt +0 -0
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/python_service_builder.egg-info/dependency_links.txt +0 -0
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/python_service_builder.egg-info/top_level.txt +0 -0
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/service_framework/__init__.py +0 -0
- {python_service_builder-1.1.0 → python_service_builder-1.2.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: python-service-builder
|
|
3
|
-
Version: 1.1
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Helper library for easier creation of Google services.
|
|
5
5
|
Author-email: David Harcombe <david.harcombe@gmail.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -11,6 +11,7 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Requires-Python: >=3.10
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
Requires-Dist: absl-py>=0.12.0
|
|
14
|
+
Requires-Dist: aenum>=3.1.0
|
|
14
15
|
Requires-Dist: dataclasses-json>=0.5.2
|
|
15
16
|
Requires-Dist: gcs-oauth2-boto-plugin>=2.7
|
|
16
17
|
Requires-Dist: google-api-core>=1.26.1
|
|
@@ -24,6 +25,7 @@ Requires-Dist: httplib2>=0.19.0
|
|
|
24
25
|
Requires-Dist: immutabledict>=2.2.1
|
|
25
26
|
Requires-Dist: oauth2client>=4.1.3
|
|
26
27
|
Requires-Dist: oauthlib>=3.1.0
|
|
28
|
+
Requires-Dist: web.py>=0.62
|
|
27
29
|
|
|
28
30
|
# Python Library for helping to create Python services from Google APIs
|
|
29
31
|
|
|
@@ -4,31 +4,33 @@ build-backend = 'setuptools.build_meta'
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "python-service-builder"
|
|
7
|
-
version = "1.1
|
|
7
|
+
version = "1.2.1"
|
|
8
8
|
authors = [{ name = "David Harcombe", email = "david.harcombe@gmail.com" }]
|
|
9
9
|
description = "Helper library for easier creation of Google services."
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
requires-python = ">=3.10"
|
|
12
12
|
classifiers = [
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
"Programming Language :: Python :: 3",
|
|
14
|
+
"Operating System :: OS Independent",
|
|
15
15
|
]
|
|
16
16
|
license = { text = "Apache 2.0" }
|
|
17
17
|
dependencies = [
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
18
|
+
'absl-py>=0.12.0',
|
|
19
|
+
'aenum>=3.1.0',
|
|
20
|
+
'dataclasses-json>=0.5.2',
|
|
21
|
+
'gcs-oauth2-boto-plugin>=2.7',
|
|
22
|
+
'google-api-core>=1.26.1',
|
|
23
|
+
'google-api-python-client>=2.0.2',
|
|
24
|
+
'google-auth-httplib2>=0.1.0',
|
|
25
|
+
'google-auth-oauthlib>=0.4.3',
|
|
26
|
+
'google-auth>=1.28.0',
|
|
27
|
+
'google-reauth>=0.1.1',
|
|
28
|
+
'googleapis-common-protos>=1.53.0',
|
|
29
|
+
'httplib2>=0.19.0',
|
|
30
|
+
'immutabledict>=2.2.1',
|
|
31
|
+
'oauth2client>=4.1.3',
|
|
32
|
+
'oauthlib>=3.1.0',
|
|
33
|
+
'web.py>=0.62',
|
|
32
34
|
]
|
|
33
35
|
|
|
34
36
|
[tool.setuptools]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: python-service-builder
|
|
3
|
-
Version: 1.1
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Helper library for easier creation of Google services.
|
|
5
5
|
Author-email: David Harcombe <david.harcombe@gmail.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -11,6 +11,7 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Requires-Python: >=3.10
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
Requires-Dist: absl-py>=0.12.0
|
|
14
|
+
Requires-Dist: aenum>=3.1.0
|
|
14
15
|
Requires-Dist: dataclasses-json>=0.5.2
|
|
15
16
|
Requires-Dist: gcs-oauth2-boto-plugin>=2.7
|
|
16
17
|
Requires-Dist: google-api-core>=1.26.1
|
|
@@ -24,6 +25,7 @@ Requires-Dist: httplib2>=0.19.0
|
|
|
24
25
|
Requires-Dist: immutabledict>=2.2.1
|
|
25
26
|
Requires-Dist: oauth2client>=4.1.3
|
|
26
27
|
Requires-Dist: oauthlib>=3.1.0
|
|
28
|
+
Requires-Dist: web.py>=0.62
|
|
27
29
|
|
|
28
30
|
# Python Library for helping to create Python services from Google APIs
|
|
29
31
|
|
{python_service_builder-1.1.0 → python_service_builder-1.2.1}/service_framework/__init_test.py
RENAMED
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
|
-
import unittest
|
|
15
|
-
|
|
16
|
-
from service_framework import lazy_property, camel_field
|
|
17
14
|
import dataclasses
|
|
15
|
+
import unittest
|
|
18
16
|
from dataclasses import Field, dataclass
|
|
19
17
|
|
|
20
18
|
from dataclasses_json import dataclass_json
|
|
21
19
|
|
|
20
|
+
from service_framework import camel_field, lazy_property
|
|
21
|
+
|
|
22
22
|
|
|
23
23
|
class LazyPropertyTest(unittest.TestCase):
|
|
24
24
|
class Foo(object):
|
{python_service_builder-1.1.0 → python_service_builder-1.2.1}/service_framework/list_services.py
RENAMED
|
@@ -12,20 +12,41 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
from absl import app
|
|
15
|
+
import json
|
|
16
|
+
import urllib.parse
|
|
18
17
|
import urllib.request
|
|
18
|
+
from collections import namedtuple
|
|
19
19
|
from contextlib import closing, suppress
|
|
20
|
-
from
|
|
21
|
-
import urllib.parse
|
|
22
|
-
import json
|
|
20
|
+
from pprint import pprint
|
|
23
21
|
from typing import Mapping
|
|
22
|
+
from urllib.request import urlopen
|
|
23
|
+
|
|
24
|
+
import aenum as enum
|
|
25
|
+
from absl import app
|
|
26
|
+
|
|
27
|
+
from service_framework.services import ServiceDefinition
|
|
24
28
|
|
|
25
29
|
""" _summary_
|
|
26
30
|
"""
|
|
27
31
|
|
|
28
32
|
|
|
33
|
+
class ServiceFinder(enum.EnumMeta):
|
|
34
|
+
def __call__(cls, value, *args, **kwargs):
|
|
35
|
+
api = ServiceLister().find(name=value.lower())
|
|
36
|
+
if api:
|
|
37
|
+
(service_name, version) = api[0]
|
|
38
|
+
definition = ServiceDefinition(
|
|
39
|
+
service_name=service_name,
|
|
40
|
+
version=version,
|
|
41
|
+
discovery_service_url=(
|
|
42
|
+
f'https://{service_name}.googleapis.com/$discovery/rest'
|
|
43
|
+
f'?version={version}'))
|
|
44
|
+
return definition
|
|
45
|
+
|
|
46
|
+
else:
|
|
47
|
+
raise Exception(f'No service found for {value}')
|
|
48
|
+
|
|
49
|
+
|
|
29
50
|
class ServiceLister(object):
|
|
30
51
|
def find_all(self) -> Mapping[str, str]:
|
|
31
52
|
return self.find(None)
|
|
@@ -67,7 +88,8 @@ class ServiceLister(object):
|
|
|
67
88
|
def main(unused) -> None:
|
|
68
89
|
del unused
|
|
69
90
|
|
|
70
|
-
apis = ServiceLister().find(name='CHAT'.lower())
|
|
91
|
+
# apis = ServiceLister().find(name='CHAT'.lower())
|
|
92
|
+
apis = ServiceLister().find_all()
|
|
71
93
|
pprint(apis, indent=2)
|
|
72
94
|
|
|
73
95
|
|
{python_service_builder-1.1.0 → python_service_builder-1.2.1}/service_framework/service_builder.py
RENAMED
|
@@ -18,20 +18,15 @@ Authenticate and fetch a discoverable API service.
|
|
|
18
18
|
from __future__ import annotations
|
|
19
19
|
|
|
20
20
|
import dataclasses
|
|
21
|
-
import
|
|
22
|
-
from typing import Any, List, Mapping, Optional, Union
|
|
21
|
+
from typing import List, Mapping, Optional, Union
|
|
23
22
|
|
|
24
23
|
import dataclasses_json
|
|
25
24
|
import google_auth_httplib2
|
|
26
25
|
from apiclient import discovery
|
|
27
|
-
from google.auth import exceptions
|
|
28
26
|
from google.oauth2 import credentials as oauth
|
|
29
|
-
from httplib2 import Http
|
|
30
|
-
from oauth2client import service_account
|
|
31
|
-
from oauth2client import client
|
|
32
27
|
|
|
33
|
-
from service_framework.services import Service
|
|
34
28
|
from service_framework import snake_field
|
|
29
|
+
from service_framework.services import Service
|
|
35
30
|
|
|
36
31
|
|
|
37
32
|
@dataclasses_json.dataclass_json(undefined=dataclasses_json.Undefined.EXCLUDE)
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
# Copyright 2022 David Harcombe
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import dataclasses
|
|
17
|
+
from typing import Optional
|
|
18
|
+
|
|
19
|
+
import aenum as enum
|
|
20
|
+
import dataclasses_json
|
|
21
|
+
import immutabledict
|
|
22
|
+
|
|
23
|
+
from . import camel_field, lazy_property
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@dataclasses_json.dataclass_json
|
|
27
|
+
@dataclasses.dataclass
|
|
28
|
+
class ServiceDefinition(object):
|
|
29
|
+
"""Defines a Google Service for the builder."""
|
|
30
|
+
service_name: Optional[str] = camel_field()
|
|
31
|
+
version: Optional[str] = camel_field()
|
|
32
|
+
discovery_service_url: Optional[str] = camel_field()
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class S(enum.Enum):
|
|
36
|
+
"""Defines the generic Enum for any service.
|
|
37
|
+
|
|
38
|
+
Raises:
|
|
39
|
+
ValueError: if no enum is defined.
|
|
40
|
+
"""
|
|
41
|
+
@lazy_property
|
|
42
|
+
def definition(self) -> ServiceDefinition:
|
|
43
|
+
"""Fetch the ServiceDefinition.
|
|
44
|
+
|
|
45
|
+
Lazily returns the dataclass containing the service definition
|
|
46
|
+
details. It has to be lazy, as it can't be defined at
|
|
47
|
+
initialization time.
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
ServiceDefinition: the service definition
|
|
51
|
+
"""
|
|
52
|
+
(service_name, version) = SERVICE_DEFINITIONS.get(self.name)
|
|
53
|
+
return ServiceDefinition(
|
|
54
|
+
service_name=service_name,
|
|
55
|
+
version=version,
|
|
56
|
+
discovery_service_url=(
|
|
57
|
+
f'https://{service_name}.googleapis.com/$discovery/rest'
|
|
58
|
+
f'?version={version}'))
|
|
59
|
+
|
|
60
|
+
@classmethod
|
|
61
|
+
def from_value(cls, value: str) -> S:
|
|
62
|
+
"""Creates a service enum from the name of the service.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
value (str): the service name
|
|
66
|
+
|
|
67
|
+
Raises:
|
|
68
|
+
ValueError: no service found
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
S: the service definition
|
|
72
|
+
"""
|
|
73
|
+
for k, v in cls.__members__.items():
|
|
74
|
+
if k == value.upper():
|
|
75
|
+
return v
|
|
76
|
+
else:
|
|
77
|
+
raise ValueError(f"'{cls.__name__}' enum not found for '{value}'")
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
SERVICE_DEFINITIONS = \
|
|
81
|
+
immutabledict.immutabledict(
|
|
82
|
+
{'ABUSIVEEXPERIENCEREPORT': ('abusiveexperiencereport', 'v1'),
|
|
83
|
+
'ACCELERATEDMOBILEPAGEURL': ('acceleratedmobilepageurl', 'v1'),
|
|
84
|
+
'ACCESSAPPROVAL': ('accessapproval', 'v1'),
|
|
85
|
+
'ACCESSCONTEXTMANAGER': ('accesscontextmanager', 'v1'),
|
|
86
|
+
'ADDRESSVALIDATION': ('addressvalidation', 'v1'),
|
|
87
|
+
'ADEXCHANGEBUYER2': ('adexchangebuyer2', 'v2beta1'),
|
|
88
|
+
'ADEXPERIENCEREPORT': ('adexperiencereport', 'v1'),
|
|
89
|
+
'ADMIN': ('admin', 'reports_v1'),
|
|
90
|
+
'ADMOB': ('admob', 'v1'),
|
|
91
|
+
'ADSENSE': ('adsense', 'v2'),
|
|
92
|
+
'ADSENSEPLATFORM': ('adsenseplatform', 'v1'),
|
|
93
|
+
'ADVISORYNOTIFICATIONS': ('advisorynotifications', 'v1'),
|
|
94
|
+
'AIPLATFORM': ('aiplatform', 'v1'),
|
|
95
|
+
'AIRQUALITY': ('airquality', 'v1'),
|
|
96
|
+
'ALERTCENTER': ('alertcenter', 'v1beta1'),
|
|
97
|
+
'ALLOYDB': ('alloydb', 'v1'),
|
|
98
|
+
'ANALYTICS': ('analytics', 'v3'),
|
|
99
|
+
'ANALYTICSADMIN': ('analyticsadmin', 'v1beta'),
|
|
100
|
+
'ANALYTICSDATA': ('analyticsdata', 'v1beta'),
|
|
101
|
+
'ANALYTICSHUB': ('analyticshub', 'v1'),
|
|
102
|
+
'ANALYTICSREPORTING': ('analyticsreporting', 'v4'),
|
|
103
|
+
'ANDROIDDEVICEPROVISIONING': ('androiddeviceprovisioning', 'v1'),
|
|
104
|
+
'ANDROIDENTERPRISE': ('androidenterprise', 'v1'),
|
|
105
|
+
'ANDROIDMANAGEMENT': ('androidmanagement', 'v1'),
|
|
106
|
+
'ANDROIDPUBLISHER': ('androidpublisher', 'v3'),
|
|
107
|
+
'APIGATEWAY': ('apigateway', 'v1'),
|
|
108
|
+
'APIGEE': ('apigee', 'v1'),
|
|
109
|
+
'APIGEEREGISTRY': ('apigeeregistry', 'v1'),
|
|
110
|
+
'APIKEYS': ('apikeys', 'v2'),
|
|
111
|
+
'APIM': ('apim', 'v1alpha'),
|
|
112
|
+
'APPENGINE': ('appengine', 'v1'),
|
|
113
|
+
'APPHUB': ('apphub', 'v1'),
|
|
114
|
+
'AREA120TABLES': ('area120tables', 'v1alpha1'),
|
|
115
|
+
'AREAINSIGHTS': ('areainsights', 'v1'),
|
|
116
|
+
'ARTIFACTREGISTRY': ('artifactregistry', 'v1'),
|
|
117
|
+
'ASSUREDWORKLOADS': ('assuredworkloads', 'v1'),
|
|
118
|
+
'AUTHORIZEDBUYERSMARKETPLACE': ('authorizedbuyersmarketplace', 'v1'),
|
|
119
|
+
'BACKUPDR': ('backupdr', 'v1'),
|
|
120
|
+
'BAREMETALSOLUTION': ('baremetalsolution', 'v2'),
|
|
121
|
+
'BATCH': ('batch', 'v1'),
|
|
122
|
+
'BEYONDCORP': ('beyondcorp', 'v1'),
|
|
123
|
+
'BIGLAKE': ('biglake', 'v1'),
|
|
124
|
+
'BIGQUERY': ('bigquery', 'v2'),
|
|
125
|
+
'BIGQUERYCONNECTION': ('bigqueryconnection', 'v1'),
|
|
126
|
+
'BIGQUERYDATAPOLICY': ('bigquerydatapolicy', 'v1'),
|
|
127
|
+
'BIGQUERYDATATRANSFER': ('bigquerydatatransfer', 'v1'),
|
|
128
|
+
'BIGQUERYRESERVATION': ('bigqueryreservation', 'v1'),
|
|
129
|
+
'BIGTABLEADMIN': ('bigtableadmin', 'v2'),
|
|
130
|
+
'BILLINGBUDGETS': ('billingbudgets', 'v1'),
|
|
131
|
+
'BINARYAUTHORIZATION': ('binaryauthorization', 'v1'),
|
|
132
|
+
'BLOCKCHAINNODEENGINE': ('blockchainnodeengine', 'v1'),
|
|
133
|
+
'BLOGGER': ('blogger', 'v3'),
|
|
134
|
+
'BOOKS': ('books', 'v1'),
|
|
135
|
+
'BUSINESSPROFILEPERFORMANCE': ('businessprofileperformance', 'v1'),
|
|
136
|
+
'CALENDAR': ('calendar', 'v3'),
|
|
137
|
+
'CERTIFICATEMANAGER': ('certificatemanager', 'v1'),
|
|
138
|
+
'CHAT': ('chat', 'v1'),
|
|
139
|
+
'CHECKS': ('checks', 'v1alpha'),
|
|
140
|
+
'CHROMEMANAGEMENT': ('chromemanagement', 'v1'),
|
|
141
|
+
'CHROMEPOLICY': ('chromepolicy', 'v1'),
|
|
142
|
+
'CHROMEUXREPORT': ('chromeuxreport', 'v1'),
|
|
143
|
+
'CIVICINFO': ('civicinfo', 'v2'),
|
|
144
|
+
'CLASSROOM': ('classroom', 'v1'),
|
|
145
|
+
'CLOUDASSET': ('cloudasset', 'v1'),
|
|
146
|
+
'CLOUDBILLING': ('cloudbilling', 'v1'),
|
|
147
|
+
'CLOUDBUILD': ('cloudbuild', 'v2'),
|
|
148
|
+
'CLOUDCHANNEL': ('cloudchannel', 'v1'),
|
|
149
|
+
'CLOUDCONTROLSPARTNER': ('cloudcontrolspartner', 'v1'),
|
|
150
|
+
'CLOUDDEPLOY': ('clouddeploy', 'v1'),
|
|
151
|
+
'CLOUDERRORREPORTING': ('clouderrorreporting', 'v1beta1'),
|
|
152
|
+
'CLOUDFUNCTIONS': ('cloudfunctions', 'v2'),
|
|
153
|
+
'CLOUDIDENTITY': ('cloudidentity', 'v1'),
|
|
154
|
+
'CLOUDKMS': ('cloudkms', 'v1'),
|
|
155
|
+
'CLOUDPROFILER': ('cloudprofiler', 'v2'),
|
|
156
|
+
'CLOUDRESOURCEMANAGER': ('cloudresourcemanager', 'v3'),
|
|
157
|
+
'CLOUDSCHEDULER': ('cloudscheduler', 'v1'),
|
|
158
|
+
'CLOUDSEARCH': ('cloudsearch', 'v1'),
|
|
159
|
+
'CLOUDSHELL': ('cloudshell', 'v1'),
|
|
160
|
+
'CLOUDSUPPORT': ('cloudsupport', 'v2'),
|
|
161
|
+
'CLOUDTASKS': ('cloudtasks', 'v2'),
|
|
162
|
+
'CLOUDTRACE': ('cloudtrace', 'v2'),
|
|
163
|
+
'COMPOSER': ('composer', 'v1'),
|
|
164
|
+
'COMPUTE': ('compute', 'v1'),
|
|
165
|
+
'CONFIG': ('config', 'v1'),
|
|
166
|
+
'CONNECTORS': ('connectors', 'v2'),
|
|
167
|
+
'CONTACTCENTERAIPLATFORM': ('contactcenteraiplatform', 'v1alpha1'),
|
|
168
|
+
'CONTACTCENTERINSIGHTS': ('contactcenterinsights', 'v1'),
|
|
169
|
+
'CONTAINER': ('container', 'v1'),
|
|
170
|
+
'CONTAINERANALYSIS': ('containeranalysis', 'v1'),
|
|
171
|
+
'CONTENT': ('content', 'v2.1'),
|
|
172
|
+
'CONTENTWAREHOUSE': ('contentwarehouse', 'v1'),
|
|
173
|
+
'CSS': ('css', 'v1'),
|
|
174
|
+
'CUSTOMSEARCH': ('customsearch', 'v1'),
|
|
175
|
+
'DATACATALOG': ('datacatalog', 'v1'),
|
|
176
|
+
'DATAFLOW': ('dataflow', 'v1b3'),
|
|
177
|
+
'DATAFORM': ('dataform', 'v1beta1'),
|
|
178
|
+
'DATAFUSION': ('datafusion', 'v1'),
|
|
179
|
+
'DATALABELING': ('datalabeling', 'v1beta1'),
|
|
180
|
+
'DATALINEAGE': ('datalineage', 'v1'),
|
|
181
|
+
'DATAMIGRATION': ('datamigration', 'v1'),
|
|
182
|
+
'DATAPIPELINES': ('datapipelines', 'v1'),
|
|
183
|
+
'DATAPLEX': ('dataplex', 'v1'),
|
|
184
|
+
'DATAPORTABILITY': ('dataportability', 'v1'),
|
|
185
|
+
'DATAPROC': ('dataproc', 'v1'),
|
|
186
|
+
'DATASTORE': ('datastore', 'v1'),
|
|
187
|
+
'DATASTREAM': ('datastream', 'v1'),
|
|
188
|
+
'DEPLOYMENTMANAGER': ('deploymentmanager', 'v2'),
|
|
189
|
+
'DEVELOPERCONNECT': ('developerconnect', 'v1'),
|
|
190
|
+
'DFAREPORTING': ('dfareporting', 'v4'),
|
|
191
|
+
'DIALOGFLOW': ('dialogflow', 'v3'),
|
|
192
|
+
'DIGITALASSETLINKS': ('digitalassetlinks', 'v1'),
|
|
193
|
+
'DISCOVERY': ('discovery', 'v1'),
|
|
194
|
+
'DISCOVERYENGINE': ('discoveryengine', 'v1'),
|
|
195
|
+
'DISPLAYVIDEO': ('displayvideo', 'v4'),
|
|
196
|
+
'DLP': ('dlp', 'v2'),
|
|
197
|
+
'DNS': ('dns', 'v1'),
|
|
198
|
+
'DOCS': ('docs', 'v1'),
|
|
199
|
+
'DOCUMENTAI': ('documentai', 'v1'),
|
|
200
|
+
'DOMAINS': ('domains', 'v1'),
|
|
201
|
+
'DOUBLECLICKBIDMANAGER': ('doubleclickbidmanager', 'v2'),
|
|
202
|
+
'DOUBLECLICKSEARCH': ('doubleclicksearch', 'v2'),
|
|
203
|
+
'DRIVE': ('drive', 'v3'),
|
|
204
|
+
'DRIVEACTIVITY': ('driveactivity', 'v2'),
|
|
205
|
+
'DRIVELABELS': ('drivelabels', 'v2'),
|
|
206
|
+
'ESSENTIALCONTACTS': ('essentialcontacts', 'v1'),
|
|
207
|
+
'EVENTARC': ('eventarc', 'v1'),
|
|
208
|
+
'FACTCHECKTOOLS': ('factchecktools', 'v1alpha1'),
|
|
209
|
+
'FCM': ('fcm', 'v1'),
|
|
210
|
+
'FCMDATA': ('fcmdata', 'v1beta1'),
|
|
211
|
+
'FILE': ('file', 'v1'),
|
|
212
|
+
'FIREBASE': ('firebase', 'v1beta1'),
|
|
213
|
+
'FIREBASEAPPCHECK': ('firebaseappcheck', 'v1'),
|
|
214
|
+
'FIREBASEAPPDISTRIBUTION': ('firebaseappdistribution', 'v1'),
|
|
215
|
+
'FIREBASEDATABASE': ('firebasedatabase', 'v1beta'),
|
|
216
|
+
'FIREBASEDATACONNECT': ('firebasedataconnect', 'v1beta'),
|
|
217
|
+
'FIREBASEDYNAMICLINKS': ('firebasedynamiclinks', 'v1'),
|
|
218
|
+
'FIREBASEHOSTING': ('firebasehosting', 'v1'),
|
|
219
|
+
'FIREBASEML': ('firebaseml', 'v1'),
|
|
220
|
+
'FIREBASERULES': ('firebaserules', 'v1'),
|
|
221
|
+
'FIREBASESTORAGE': ('firebasestorage', 'v1beta'),
|
|
222
|
+
'FIRESTORE': ('firestore', 'v1'),
|
|
223
|
+
'FITNESS': ('fitness', 'v1'),
|
|
224
|
+
'FORMS': ('forms', 'v1'),
|
|
225
|
+
'GAMES': ('games', 'v1'),
|
|
226
|
+
'GAMESCONFIGURATION': ('gamesConfiguration', 'v1configuration'),
|
|
227
|
+
'GAMESMANAGEMENT': ('gamesManagement', 'v1management'),
|
|
228
|
+
'GKEBACKUP': ('gkebackup', 'v1'),
|
|
229
|
+
'GKEHUB': ('gkehub', 'v2'),
|
|
230
|
+
'GKEONPREM': ('gkeonprem', 'v1'),
|
|
231
|
+
'GMAIL': ('gmail', 'v1'),
|
|
232
|
+
'GMAILPOSTMASTERTOOLS': ('gmailpostmastertools', 'v1'),
|
|
233
|
+
'GROUPSMIGRATION': ('groupsmigration', 'v1'),
|
|
234
|
+
'GROUPSSETTINGS': ('groupssettings', 'v1'),
|
|
235
|
+
'HEALTHCARE': ('healthcare', 'v1'),
|
|
236
|
+
'HOMEGRAPH': ('homegraph', 'v1'),
|
|
237
|
+
'IAM': ('iam', 'v2'),
|
|
238
|
+
'IAMCREDENTIALS': ('iamcredentials', 'v1'),
|
|
239
|
+
'IAP': ('iap', 'v1'),
|
|
240
|
+
'IDENTITYTOOLKIT': ('identitytoolkit', 'v3'),
|
|
241
|
+
'IDS': ('ids', 'v1'),
|
|
242
|
+
'INDEXING': ('indexing', 'v3'),
|
|
243
|
+
'INTEGRATIONS': ('integrations', 'v1'),
|
|
244
|
+
'JOBS': ('jobs', 'v4'),
|
|
245
|
+
'KEEP': ('keep', 'v1'),
|
|
246
|
+
'KGSEARCH': ('kgsearch', 'v1'),
|
|
247
|
+
'KMSINVENTORY': ('kmsinventory', 'v1'),
|
|
248
|
+
'LANGUAGE': ('language', 'v2'),
|
|
249
|
+
'LIBRARYAGENT': ('libraryagent', 'v1'),
|
|
250
|
+
'LICENSING': ('licensing', 'v1'),
|
|
251
|
+
'LIFESCIENCES': ('lifesciences', 'v2beta'),
|
|
252
|
+
'LOCALSERVICES': ('localservices', 'v1'),
|
|
253
|
+
'LOGGING': ('logging', 'v2'),
|
|
254
|
+
'LOOKER': ('looker', 'v1'),
|
|
255
|
+
'MANAGEDIDENTITIES': ('managedidentities', 'v1'),
|
|
256
|
+
'MANAGEDKAFKA': ('managedkafka', 'v1'),
|
|
257
|
+
'MANUFACTURERS': ('manufacturers', 'v1'),
|
|
258
|
+
'MARKETINGPLATFORMADMIN': ('marketingplatformadmin', 'v1alpha'),
|
|
259
|
+
'MEET': ('meet', 'v2'),
|
|
260
|
+
'MEMCACHE': ('memcache', 'v1'),
|
|
261
|
+
'MERCHANTAPI': ('merchantapi', 'reviews_v1beta'),
|
|
262
|
+
'METASTORE': ('metastore', 'v2'),
|
|
263
|
+
'MIGRATIONCENTER': ('migrationcenter', 'v1'),
|
|
264
|
+
'ML': ('ml', 'v1'),
|
|
265
|
+
'MONITORING': ('monitoring', 'v3'),
|
|
266
|
+
'MYBUSINESSACCOUNTMANAGEMENT': ('mybusinessaccountmanagement', 'v1'),
|
|
267
|
+
'MYBUSINESSBUSINESSINFORMATION': ('mybusinessbusinessinformation', 'v1'),
|
|
268
|
+
'MYBUSINESSLODGING': ('mybusinesslodging', 'v1'),
|
|
269
|
+
'MYBUSINESSNOTIFICATIONS': ('mybusinessnotifications', 'v1'),
|
|
270
|
+
'MYBUSINESSPLACEACTIONS': ('mybusinessplaceactions', 'v1'),
|
|
271
|
+
'MYBUSINESSQANDA': ('mybusinessqanda', 'v1'),
|
|
272
|
+
'MYBUSINESSVERIFICATIONS': ('mybusinessverifications', 'v1'),
|
|
273
|
+
'NETAPP': ('netapp', 'v1'),
|
|
274
|
+
'NETWORKCONNECTIVITY': ('networkconnectivity', 'v1'),
|
|
275
|
+
'NETWORKMANAGEMENT': ('networkmanagement', 'v1'),
|
|
276
|
+
'NETWORKSECURITY': ('networksecurity', 'v1'),
|
|
277
|
+
'NETWORKSERVICES': ('networkservices', 'v1'),
|
|
278
|
+
'NOTEBOOKS': ('notebooks', 'v2'),
|
|
279
|
+
'OAUTH2': ('oauth2', 'v2'),
|
|
280
|
+
'ONDEMANDSCANNING': ('ondemandscanning', 'v1'),
|
|
281
|
+
'ORACLEDATABASE': ('oracledatabase', 'v1'),
|
|
282
|
+
'ORGPOLICY': ('orgpolicy', 'v2'),
|
|
283
|
+
'OSCONFIG': ('osconfig', 'v1'),
|
|
284
|
+
'OSLOGIN': ('oslogin', 'v1'),
|
|
285
|
+
'PAGESPEEDONLINE': ('pagespeedonline', 'v5'),
|
|
286
|
+
'PARALLELSTORE': ('parallelstore', 'v1'),
|
|
287
|
+
'PAYMENTSRESELLERSUBSCRIPTION': ('paymentsresellersubscription', 'v1'),
|
|
288
|
+
'PEOPLE': ('people', 'v1'),
|
|
289
|
+
'PLACES': ('places', 'v1'),
|
|
290
|
+
'PLAYCUSTOMAPP': ('playcustomapp', 'v1'),
|
|
291
|
+
'PLAYDEVELOPERREPORTING': ('playdeveloperreporting', 'v1beta1'),
|
|
292
|
+
'PLAYGROUPING': ('playgrouping', 'v1alpha1'),
|
|
293
|
+
'PLAYINTEGRITY': ('playintegrity', 'v1'),
|
|
294
|
+
'POLICYANALYZER': ('policyanalyzer', 'v1'),
|
|
295
|
+
'POLICYSIMULATOR': ('policysimulator', 'v1'),
|
|
296
|
+
'POLICYTROUBLESHOOTER': ('policytroubleshooter', 'v1'),
|
|
297
|
+
'POLLEN': ('pollen', 'v1'),
|
|
298
|
+
'POLY': ('poly', 'v1'),
|
|
299
|
+
'PRIVATECA': ('privateca', 'v1'),
|
|
300
|
+
'PROD_TT_SASPORTAL': ('prod_tt_sasportal', 'v1alpha1'),
|
|
301
|
+
'PUBLICCA': ('publicca', 'v1'),
|
|
302
|
+
'PUBSUB': ('pubsub', 'v1'),
|
|
303
|
+
'PUBSUBLITE': ('pubsublite', 'v1'),
|
|
304
|
+
'RAPIDMIGRATIONASSESSMENT': ('rapidmigrationassessment', 'v1'),
|
|
305
|
+
'READERREVENUESUBSCRIPTIONLINKING': ('readerrevenuesubscriptionlinking',
|
|
306
|
+
'v1'),
|
|
307
|
+
'REALTIMEBIDDING': ('realtimebidding', 'v1'),
|
|
308
|
+
'RECAPTCHAENTERPRISE': ('recaptchaenterprise', 'v1'),
|
|
309
|
+
'RECOMMENDATIONENGINE': ('recommendationengine', 'v1beta1'),
|
|
310
|
+
'RECOMMENDER': ('recommender', 'v1'),
|
|
311
|
+
'REDIS': ('redis', 'v1'),
|
|
312
|
+
'RESELLER': ('reseller', 'v1'),
|
|
313
|
+
'RETAIL': ('retail', 'v2'),
|
|
314
|
+
'RUN': ('run', 'v2'),
|
|
315
|
+
'RUNTIMECONFIG': ('runtimeconfig', 'v1'),
|
|
316
|
+
'SAFEBROWSING': ('safebrowsing', 'v5'),
|
|
317
|
+
'SASPORTAL': ('sasportal', 'v1alpha1'),
|
|
318
|
+
'SCRIPT': ('script', 'v1'),
|
|
319
|
+
'SEARCHADS360': ('searchads360', 'v0'),
|
|
320
|
+
'SEARCHCONSOLE': ('searchconsole', 'v1'),
|
|
321
|
+
'SECRETMANAGER': ('secretmanager', 'v1'),
|
|
322
|
+
'SECURITYCENTER': ('securitycenter', 'v1'),
|
|
323
|
+
'SECURITYPOSTURE': ('securityposture', 'v1'),
|
|
324
|
+
'SERVICECONSUMERMANAGEMENT': ('serviceconsumermanagement', 'v1'),
|
|
325
|
+
'SERVICECONTROL': ('servicecontrol', 'v2'),
|
|
326
|
+
'SERVICEDIRECTORY': ('servicedirectory', 'v1'),
|
|
327
|
+
'SERVICEMANAGEMENT': ('servicemanagement', 'v1'),
|
|
328
|
+
'SERVICENETWORKING': ('servicenetworking', 'v1'),
|
|
329
|
+
'SERVICEUSAGE': ('serviceusage', 'v1'),
|
|
330
|
+
'SHEETS': ('sheets', 'v4'),
|
|
331
|
+
'SITEVERIFICATION': ('siteVerification', 'v1'),
|
|
332
|
+
'SLIDES': ('slides', 'v1'),
|
|
333
|
+
'SMARTDEVICEMANAGEMENT': ('smartdevicemanagement', 'v1'),
|
|
334
|
+
'SOLAR': ('solar', 'v1'),
|
|
335
|
+
'SPANNER': ('spanner', 'v1'),
|
|
336
|
+
'SPEECH': ('speech', 'v1'),
|
|
337
|
+
'SQLADMIN': ('sqladmin', 'v1'),
|
|
338
|
+
'STORAGE': ('storage', 'v1'),
|
|
339
|
+
'STORAGETRANSFER': ('storagetransfer', 'v1'),
|
|
340
|
+
'STREETVIEWPUBLISH': ('streetviewpublish', 'v1'),
|
|
341
|
+
'STS': ('sts', 'v1'),
|
|
342
|
+
'TAGMANAGER': ('tagmanager', 'v2'),
|
|
343
|
+
'TASKS': ('tasks', 'v1'),
|
|
344
|
+
'TESTING': ('testing', 'v1'),
|
|
345
|
+
'TEXTTOSPEECH': ('texttospeech', 'v1'),
|
|
346
|
+
'TOOLRESULTS': ('toolresults', 'v1beta3'),
|
|
347
|
+
'TPU': ('tpu', 'v2'),
|
|
348
|
+
'TRAFFICDIRECTOR': ('trafficdirector', 'v3'),
|
|
349
|
+
'TRANSCODER': ('transcoder', 'v1'),
|
|
350
|
+
'TRANSLATE': ('translate', 'v3'),
|
|
351
|
+
'TRAVELIMPACTMODEL': ('travelimpactmodel', 'v1'),
|
|
352
|
+
'VAULT': ('vault', 'v1'),
|
|
353
|
+
'VERIFIEDACCESS': ('verifiedaccess', 'v2'),
|
|
354
|
+
'VERSIONHISTORY': ('versionhistory', 'v1'),
|
|
355
|
+
'VIDEOINTELLIGENCE': ('videointelligence', 'v1'),
|
|
356
|
+
'VISION': ('vision', 'v1'),
|
|
357
|
+
'VMMIGRATION': ('vmmigration', 'v1'),
|
|
358
|
+
'VMWAREENGINE': ('vmwareengine', 'v1'),
|
|
359
|
+
'VPCACCESS': ('vpcaccess', 'v1'),
|
|
360
|
+
'WALLETOBJECTS': ('walletobjects', 'v1'),
|
|
361
|
+
'WEBFONTS': ('webfonts', 'v1'),
|
|
362
|
+
'WEBRISK': ('webrisk', 'v1'),
|
|
363
|
+
'WEBSECURITYSCANNER': ('websecurityscanner', 'v1'),
|
|
364
|
+
'WORKFLOWEXECUTIONS': ('workflowexecutions', 'v1'),
|
|
365
|
+
'WORKFLOWS': ('workflows', 'v1'),
|
|
366
|
+
'WORKLOADMANAGER': ('workloadmanager', 'v1'),
|
|
367
|
+
'WORKSPACEEVENTS': ('workspaceevents', 'v1'),
|
|
368
|
+
'WORKSTATIONS': ('workstations', 'v1'),
|
|
369
|
+
'YOUTUBE': ('youtube', 'v3'),
|
|
370
|
+
'YOUTUBEANALYTICS': ('youtubeAnalytics', 'v2'),
|
|
371
|
+
'YOUTUBEREPORTING': ('youtubereporting', 'v1')})
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
Service = S('Service', list(SERVICE_DEFINITIONS.keys()))
|
|
@@ -1,453 +0,0 @@
|
|
|
1
|
-
# Copyright 2022 David Harcombe
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
from __future__ import annotations
|
|
15
|
-
|
|
16
|
-
import dataclasses
|
|
17
|
-
import aenum as enum
|
|
18
|
-
from typing import Any, Optional
|
|
19
|
-
|
|
20
|
-
import dataclasses_json
|
|
21
|
-
import immutabledict
|
|
22
|
-
|
|
23
|
-
from . import camel_field, lazy_property
|
|
24
|
-
from .list_services import ServiceLister
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
@dataclasses_json.dataclass_json
|
|
28
|
-
@dataclasses.dataclass
|
|
29
|
-
class ServiceDefinition(object):
|
|
30
|
-
"""Defines a Google Service for the builder."""
|
|
31
|
-
service_name: Optional[str] = camel_field()
|
|
32
|
-
version: Optional[str] = camel_field()
|
|
33
|
-
discovery_service_url: Optional[str] = camel_field()
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
DEFINITIONS = {'UNDEFINED': ('undefined', 'undefined')}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class ServiceFinder(enum.EnumMeta):
|
|
40
|
-
def __call__(cls, value, *args, **kwargs):
|
|
41
|
-
api = ServiceLister().find(name=value.lower())
|
|
42
|
-
if api:
|
|
43
|
-
(service_name, version) = ('foo', 'v1') # api[value]
|
|
44
|
-
definition = ServiceDefinition(
|
|
45
|
-
service_name=service_name,
|
|
46
|
-
version=version,
|
|
47
|
-
discovery_service_url=(
|
|
48
|
-
f'https://{service_name}.googleapis.com/$discovery/rest'
|
|
49
|
-
f'?version={version}'))
|
|
50
|
-
DEFINITIONS |= {value.upper(): (service_name, version)}
|
|
51
|
-
return definition
|
|
52
|
-
|
|
53
|
-
else:
|
|
54
|
-
raise Exception(f'No service found for {value}')
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
class DS(enum.Enum): #, metaclass=ServiceFinder):
|
|
58
|
-
"""Defines the generic Enum for any service.
|
|
59
|
-
|
|
60
|
-
Raises:
|
|
61
|
-
ValueError: if no enum is defined and a service cannot be found.
|
|
62
|
-
"""
|
|
63
|
-
|
|
64
|
-
@lazy_property
|
|
65
|
-
def definition(self) -> ServiceDefinition:
|
|
66
|
-
"""Fetch the ServiceDefinition.
|
|
67
|
-
|
|
68
|
-
Lazily returns the dataclass containing the service definition
|
|
69
|
-
details. It has to be lazy, as it can't be defined at
|
|
70
|
-
initialization time.
|
|
71
|
-
|
|
72
|
-
Returns:
|
|
73
|
-
ServiceDefinition: the service definition
|
|
74
|
-
"""
|
|
75
|
-
(service_name, version) = DEFINITIONS.get(self.name)
|
|
76
|
-
return ServiceDefinition(
|
|
77
|
-
service_name=service_name,
|
|
78
|
-
version=version,
|
|
79
|
-
discovery_service_url=(
|
|
80
|
-
f'https://{service_name}.googleapis.com/$discovery/rest'
|
|
81
|
-
f'?version={version}'))
|
|
82
|
-
|
|
83
|
-
@classmethod
|
|
84
|
-
def from_value(cls, value: str) -> DS:
|
|
85
|
-
"""Creates a service enum from the name of the service.
|
|
86
|
-
|
|
87
|
-
Args:
|
|
88
|
-
value (str): the service name
|
|
89
|
-
|
|
90
|
-
Raises:
|
|
91
|
-
ValueError: no service found
|
|
92
|
-
|
|
93
|
-
Returns:
|
|
94
|
-
S: the service definition
|
|
95
|
-
"""
|
|
96
|
-
for k, v in cls.__members__.items():
|
|
97
|
-
if k == value.upper():
|
|
98
|
-
return v.value
|
|
99
|
-
else:
|
|
100
|
-
api = ServiceLister().find(name=value.lower())
|
|
101
|
-
if api:
|
|
102
|
-
(service_name, version) = api[value]
|
|
103
|
-
definition = ServiceDefinition(
|
|
104
|
-
service_name=service_name,
|
|
105
|
-
version=version,
|
|
106
|
-
discovery_service_url=(
|
|
107
|
-
f'https://{service_name}.googleapis.com/$discovery/rest'
|
|
108
|
-
f'?version={version}'))
|
|
109
|
-
enum.extend_enum(cls, value.upper(), definition)
|
|
110
|
-
return definition
|
|
111
|
-
|
|
112
|
-
raise ValueError(f"'{cls.__name__}' enum not found for '{value}'")
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
DynamicService = DS('DynamicService', list(DEFINITIONS.keys()))
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
class S(enum.Enum):
|
|
119
|
-
"""Defines the generic Enum for any service.
|
|
120
|
-
|
|
121
|
-
Raises:
|
|
122
|
-
ValueError: if no enum is defined.
|
|
123
|
-
"""
|
|
124
|
-
@lazy_property
|
|
125
|
-
def definition(self) -> ServiceDefinition:
|
|
126
|
-
"""Fetch the ServiceDefinition.
|
|
127
|
-
|
|
128
|
-
Lazily returns the dataclass containing the service definition
|
|
129
|
-
details. It has to be lazy, as it can't be defined at
|
|
130
|
-
initialization time.
|
|
131
|
-
|
|
132
|
-
Returns:
|
|
133
|
-
ServiceDefinition: the service definition
|
|
134
|
-
"""
|
|
135
|
-
(service_name, version) = SERVICE_DEFINITIONS.get(self.name)
|
|
136
|
-
return ServiceDefinition(
|
|
137
|
-
service_name=service_name,
|
|
138
|
-
version=version,
|
|
139
|
-
discovery_service_url=(
|
|
140
|
-
f'https://{service_name}.googleapis.com/$discovery/rest'
|
|
141
|
-
f'?version={version}'))
|
|
142
|
-
|
|
143
|
-
@classmethod
|
|
144
|
-
def from_value(cls, value: str) -> S:
|
|
145
|
-
"""Creates a service enum from the name of the service.
|
|
146
|
-
|
|
147
|
-
Args:
|
|
148
|
-
value (str): the service name
|
|
149
|
-
|
|
150
|
-
Raises:
|
|
151
|
-
ValueError: no service found
|
|
152
|
-
|
|
153
|
-
Returns:
|
|
154
|
-
S: the service definition
|
|
155
|
-
"""
|
|
156
|
-
for k, v in cls.__members__.items():
|
|
157
|
-
if k == value.upper():
|
|
158
|
-
return v
|
|
159
|
-
else:
|
|
160
|
-
raise ValueError(f"'{cls.__name__}' enum not found for '{value}'")
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
SERVICE_DEFINITIONS = \
|
|
164
|
-
immutabledict.immutabledict({
|
|
165
|
-
'ABUSIVEEXPERIENCEREPORT': ('abusiveexperiencereport', 'v1'),
|
|
166
|
-
'ACCELERATEDMOBILEPAGEURL': ('acceleratedmobilepageurl', 'v1'),
|
|
167
|
-
'ACCESSAPPROVAL': ('accessapproval', 'v1'),
|
|
168
|
-
'ACCESSCONTEXTMANAGER': ('accesscontextmanager', 'v1'),
|
|
169
|
-
'ADDRESSVALIDATION': ('addressvalidation', 'v1'),
|
|
170
|
-
'ADEXCHANGEBUYER2': ('adexchangebuyer2', 'v2beta1'),
|
|
171
|
-
'ADEXPERIENCEREPORT': ('adexperiencereport', 'v1'),
|
|
172
|
-
'ADMIN': ('admin', 'reports_v1'),
|
|
173
|
-
'ADMOB': ('admob', 'v1'),
|
|
174
|
-
'ADSENSE': ('adsense', 'v2'),
|
|
175
|
-
'ADSENSEPLATFORM': ('adsenseplatform', 'v1'),
|
|
176
|
-
'ADVISORYNOTIFICATIONS': ('advisorynotifications', 'v1'),
|
|
177
|
-
'AIPLATFORM': ('aiplatform', 'v1'),
|
|
178
|
-
'AIRQUALITY': ('airquality', 'v1'),
|
|
179
|
-
'ALERTCENTER': ('alertcenter', 'v1beta1'),
|
|
180
|
-
'ALLOYDB': ('alloydb', 'v1'),
|
|
181
|
-
'ANALYTICS': ('analytics', 'v3'),
|
|
182
|
-
'ANALYTICSADMIN': ('analyticsadmin', 'v1beta'),
|
|
183
|
-
'ANALYTICSDATA': ('analyticsdata', 'v1beta'),
|
|
184
|
-
'ANALYTICSHUB': ('analyticshub', 'v1'),
|
|
185
|
-
'ANALYTICSREPORTING': ('analyticsreporting', 'v4'),
|
|
186
|
-
'ANDROIDDEVICEPROVISIONING': ('androiddeviceprovisioning', 'v1'),
|
|
187
|
-
'ANDROIDENTERPRISE': ('androidenterprise', 'v1'),
|
|
188
|
-
'ANDROIDMANAGEMENT': ('androidmanagement', 'v1'),
|
|
189
|
-
'ANDROIDPUBLISHER': ('androidpublisher', 'v3'),
|
|
190
|
-
'APIGATEWAY': ('apigateway', 'v1'),
|
|
191
|
-
'APIGEE': ('apigee', 'v1'),
|
|
192
|
-
'APIGEEREGISTRY': ('apigeeregistry', 'v1'),
|
|
193
|
-
'APIKEYS': ('apikeys', 'v2'),
|
|
194
|
-
'APIM': ('apim', 'v1alpha'),
|
|
195
|
-
'APPENGINE': ('appengine', 'v1'),
|
|
196
|
-
'APPHUB': ('apphub', 'v1'),
|
|
197
|
-
'AREA120TABLES': ('area120tables', 'v1aha1'),
|
|
198
|
-
'ARTIFACTREGISTRY': ('artifactregistry''v1'),
|
|
199
|
-
'ASSUREDWORKLOADS': ('assuredworkloads''v1'),
|
|
200
|
-
'AUTHORIZEDBUYERSMARKETPLACE': ('authorizedbuyersmarketplace', 'v1'),
|
|
201
|
-
'BACKUPDR': ('backupdr', 'v1'),
|
|
202
|
-
'BAREMETALSOLUTION': ('baremetalsolution', 'v2'),
|
|
203
|
-
'BATCH': ('batch', 'v1'),
|
|
204
|
-
'BEYONDCORP': ('beyondcorp', 'v1'),
|
|
205
|
-
'BIGLAKE': ('biglake', 'v1'),
|
|
206
|
-
'BIGQUERY': ('bigquery', 'v2'),
|
|
207
|
-
'BIGQUERYCONNECTION': ('bigqueryconnection', 'v1'),
|
|
208
|
-
'BIGQUERYDATAPOLICY': ('bigquerydatapolicy', 'v1'),
|
|
209
|
-
'BIGQUERYDATATRANSFER': ('bigquerydatatransfer', 'v1'),
|
|
210
|
-
'BIGQUERYRESERVATION': ('bigqueryreservation', 'v1'),
|
|
211
|
-
'BIGTABLEADMIN': ('bigtableadmin', 'v2'),
|
|
212
|
-
'BILLINGBUDGETS': ('billingbudgets', 'v1'),
|
|
213
|
-
'BINARYAUTHORIZATION': ('binaryauthorization', 'v1'),
|
|
214
|
-
'BLOCKCHAINNODEENGINE': ('blockchainnodeengine', 'v1'),
|
|
215
|
-
'BLOGGER': ('blogger', 'v3'),
|
|
216
|
-
'BOOKS': ('books', 'v1'),
|
|
217
|
-
'BUSINESSPROFILEPERFORMANCE': ('businessprofileperformance', 'v1'),
|
|
218
|
-
'CALENDAR': ('calendar', 'v3'),
|
|
219
|
-
'CERTIFICATEMANAGER': ('certificatemanager', 'v1'),
|
|
220
|
-
'CHAT': ('chat', 'v1'),
|
|
221
|
-
'CHECKS': ('checks', 'v1alpha'),
|
|
222
|
-
'CHROMEMANAGEMENT': ('chromemanagement', 'v1'),
|
|
223
|
-
'CHROMEPOLICY': ('chromepolicy', 'v1'),
|
|
224
|
-
'CHROMEUXREPORT': ('chromeuxreport', 'v1'),
|
|
225
|
-
'CIVICINFO': ('civicinfo', 'v2'),
|
|
226
|
-
'CLASSROOM': ('classroom', 'v1'),
|
|
227
|
-
'CLOUDASSET': ('cloudasset', 'v1'),
|
|
228
|
-
'CLOUDBILLING': ('cloudbilling', 'v1'),
|
|
229
|
-
'CLOUDBUILD': ('cloudbuild', 'v2'),
|
|
230
|
-
'CLOUDCHANNEL': ('cloudchannel', 'v1'),
|
|
231
|
-
'CLOUDCONTROLSPARTNER': ('cloudcontrolspartner', 'v1'),
|
|
232
|
-
'CLOUDDEPLOY': ('clouddeploy', 'v1'),
|
|
233
|
-
'CLOUDERRORREPORTING': ('clouderrorreporting', 'v1beta1'),
|
|
234
|
-
'CLOUDFUNCTIONS': ('cloudfunctions', 'v2'),
|
|
235
|
-
'CLOUDIDENTITY': ('cloudidentity', 'v1'),
|
|
236
|
-
'CLOUDKMS': ('cloudkms', 'v1'),
|
|
237
|
-
'CLOUDPROFILER': ('cloudprofiler', 'v2'),
|
|
238
|
-
'CLOUDRESOURCEMANAGER': ('cloudresourcemanager', 'v3'),
|
|
239
|
-
'CLOUDSCHEDULER': ('cloudscheduler', 'v1'),
|
|
240
|
-
'CLOUDSEARCH': ('cloudsearch', 'v1'),
|
|
241
|
-
'CLOUDSHELL': ('cloudshell', 'v1'),
|
|
242
|
-
'CLOUDSUPPORT': ('cloudsupport', 'v2'),
|
|
243
|
-
'CLOUDTASKS': ('cloudtasks', 'v2'),
|
|
244
|
-
'CLOUDTRACE': ('cloudtrace', 'v2'),
|
|
245
|
-
'COMPOSER': ('composer', 'v1'),
|
|
246
|
-
'COMPUTE': ('compute', 'v1'),
|
|
247
|
-
'CONFIG': ('config', 'v1'),
|
|
248
|
-
'CONNECTORS': ('connectors', 'v2'),
|
|
249
|
-
'CONTACTCENTERAIPLATFORM': ('contactcenteraiplatform', 'v1alpha1'),
|
|
250
|
-
'CONTACTCENTERINSIGHTS': ('contactcenterinsights', 'v1'),
|
|
251
|
-
'CONTAINER': ('container', 'v1'),
|
|
252
|
-
'CONTAINERANALYSIS': ('containeranalysis', 'v1'),
|
|
253
|
-
'CONTENT': ('content', 'v2.1'),
|
|
254
|
-
'CONTENTWAREHOUSE': ('contentwarehouse', 'v1'),
|
|
255
|
-
'CSS': ('css', 'v1'),
|
|
256
|
-
'CUSTOMSEARCH': ('customsearch', 'v1'),
|
|
257
|
-
'DATACATALOG': ('datacatalog', 'v1'),
|
|
258
|
-
'DATAFLOW': ('dataflow', 'v1b3'),
|
|
259
|
-
'DATAFORM': ('dataform', 'v1beta1'),
|
|
260
|
-
'DATAFUSION': ('datafusion', 'v1'),
|
|
261
|
-
'DATALABELING': ('datalabeling', 'v1beta1'),
|
|
262
|
-
'DATALINEAGE': ('datalineage', 'v1'),
|
|
263
|
-
'DATAMIGRATION': ('datamigration', 'v1'),
|
|
264
|
-
'DATAPIPELINES': ('datapipelines', 'v1'),
|
|
265
|
-
'DATAPLEX': ('dataplex', 'v1'),
|
|
266
|
-
'DATAPORTABILITY': ('dataportability', 'v1'),
|
|
267
|
-
'DATAPROC': ('dataproc', 'v1'),
|
|
268
|
-
'DATASTORE': ('datastore', 'v1'),
|
|
269
|
-
'DATASTREAM': ('datastream', 'v1'),
|
|
270
|
-
'DEPLOYMENTMANAGER': ('deploymentmanager', 'v2'),
|
|
271
|
-
'DEVELOPERCONNECT': ('developerconnect', 'v1'),
|
|
272
|
-
'DFAREPORTING': ('dfareporting', 'v4'),
|
|
273
|
-
'DIALOGFLOW': ('dialogflow', 'v3'),
|
|
274
|
-
'DIGITALASSETLINKS': ('digitalassetlinks', 'v1'),
|
|
275
|
-
'DISCOVERY': ('discovery', 'v1'),
|
|
276
|
-
'DISCOVERYENGINE': ('discoveryengine', 'v1'),
|
|
277
|
-
'DISPLAYVIDEO': ('displayvideo', 'v3'),
|
|
278
|
-
'DLP': ('dlp', 'v2'),
|
|
279
|
-
'DNS': ('dns', 'v1'),
|
|
280
|
-
'DOCS': ('docs', 'v1'),
|
|
281
|
-
'DOCUMENTAI': ('documentai', 'v1'),
|
|
282
|
-
'DOMAINS': ('domains', 'v1'),
|
|
283
|
-
'DOUBLECLICKBIDMANAGER': ('doubleclickbidmanager', 'v2'),
|
|
284
|
-
'DOUBLECLICKSEARCH': ('doubleclicksearch', 'v2'),
|
|
285
|
-
'DRIVE': ('drive', 'v3'),
|
|
286
|
-
'DRIVEACTIVITY': ('driveactivity', 'v2'),
|
|
287
|
-
'DRIVELABELS': ('drivelabels', 'v2'),
|
|
288
|
-
'ESSENTIALCONTACTS': ('essentialcontacts', 'v1'),
|
|
289
|
-
'EVENTARC': ('eventarc', 'v1'),
|
|
290
|
-
'FACTCHECKTOOLS': ('factchecktools', 'v1alpha1'),
|
|
291
|
-
'FCM': ('fcm', 'v1'),
|
|
292
|
-
'FCMDATA': ('fcmdata', 'v1beta1'),
|
|
293
|
-
'FILE': ('file', 'v1'),
|
|
294
|
-
'FIREBASE': ('firebase', 'v1beta1'),
|
|
295
|
-
'FIREBASEAPPCHECK': ('firebaseappcheck', 'v1'),
|
|
296
|
-
'FIREBASEAPPDISTRIBUTION': ('firebaseappdistribution', 'v1'),
|
|
297
|
-
'FIREBASEDATABASE': ('firebasedatabase', 'v1beta'),
|
|
298
|
-
'FIREBASEDATACONNECT': ('firebasedataconnect', 'v1beta'),
|
|
299
|
-
'FIREBASEDYNAMICLINKS': ('firebasedynamiclinks', 'v1'),
|
|
300
|
-
'FIREBASEHOSTING': ('firebasehosting', 'v1'),
|
|
301
|
-
'FIREBASEML': ('firebaseml', 'v1'),
|
|
302
|
-
'FIREBASERULES': ('firebaserules', 'v1'),
|
|
303
|
-
'FIREBASESTORAGE': ('firebasestorage', 'v1beta'),
|
|
304
|
-
'FIRESTORE': ('firestore', 'v1'),
|
|
305
|
-
'FITNESS': ('fitness', 'v1'),
|
|
306
|
-
'FORMS': ('forms', 'v1'),
|
|
307
|
-
'GAMES': ('games', 'v1'),
|
|
308
|
-
'GAMESCONFIGURATION': ('gamesConfiguration', 'v1configuration'),
|
|
309
|
-
'GAMESMANAGEMENT': ('gamesManagement', 'v1management'),
|
|
310
|
-
'GKEBACKUP': ('gkebackup', 'v1'),
|
|
311
|
-
'GKEHUB': ('gkehub', 'v2'),
|
|
312
|
-
'GKEONPREM': ('gkeonprem', 'v1'),
|
|
313
|
-
'GMAIL': ('gmail', 'v1'),
|
|
314
|
-
'GMAILPOSTMASTERTOOLS': ('gmailpostmastertools', 'v1'),
|
|
315
|
-
'GROUPSMIGRATION': ('groupsmigration', 'v1'),
|
|
316
|
-
'GROUPSSETTINGS': ('groupssettings', 'v1'),
|
|
317
|
-
'HEALTHCARE': ('healthcare', 'v1'),
|
|
318
|
-
'HOMEGRAPH': ('homegraph', 'v1'),
|
|
319
|
-
'IAM': ('iam', 'v2'),
|
|
320
|
-
'IAMCREDENTIALS': ('iamcredentials', 'v1'),
|
|
321
|
-
'IAP': ('iap', 'v1'),
|
|
322
|
-
'IDENTITYTOOLKIT': ('identitytoolkit', 'v3'),
|
|
323
|
-
'IDS': ('ids', 'v1'),
|
|
324
|
-
'INDEXING': ('indexing', 'v3'),
|
|
325
|
-
'INTEGRATIONS': ('integrations', 'v1'),
|
|
326
|
-
'JOBS': ('jobs', 'v4'),
|
|
327
|
-
'KEEP': ('keep', 'v1'),
|
|
328
|
-
'KGSEARCH': ('kgsearch', 'v1'),
|
|
329
|
-
'KMSINVENTORY': ('kmsinventory', 'v1'),
|
|
330
|
-
'LANGUAGE': ('language', 'v2'),
|
|
331
|
-
'LIBRARYAGENT': ('libraryagent', 'v1'),
|
|
332
|
-
'LICENSING': ('licensing', 'v1'),
|
|
333
|
-
'LIFESCIENCES': ('lifesciences', 'v2beta'),
|
|
334
|
-
'LOCALSERVICES': ('localservices', 'v1'),
|
|
335
|
-
'LOGGING': ('logging', 'v2'),
|
|
336
|
-
'LOOKER': ('looker', 'v1'),
|
|
337
|
-
'MANAGEDIDENTITIES': ('managedidentities', 'v1'),
|
|
338
|
-
'MANUFACTURERS': ('manufacturers', 'v1'),
|
|
339
|
-
'MARKETINGPLATFORMADMIN': ('marketingplatformadmin', 'v1alpha'),
|
|
340
|
-
'MEET': ('meet', 'v2'),
|
|
341
|
-
'MEMCACHE': ('memcache', 'v1'),
|
|
342
|
-
'MERCHANTAPI': ('merchantapi', 'reviews_v1beta'),
|
|
343
|
-
'METASTORE': ('metastore', 'v1'),
|
|
344
|
-
'MIGRATIONCENTER': ('migrationcenter', 'v1'),
|
|
345
|
-
'ML': ('ml', 'v1'),
|
|
346
|
-
'MONITORING': ('monitoring', 'v3'),
|
|
347
|
-
'MYBUSINESSACCOUNTMANAGEMENT': ('mybusinessaccountmanagement', 'v1'),
|
|
348
|
-
'MYBUSINESSBUSINESSINFORMATION': ('mybusinessbusinessinformation', 'v1'),
|
|
349
|
-
'MYBUSINESSLODGING': ('mybusinesslodging', 'v1'),
|
|
350
|
-
'MYBUSINESSNOTIFICATIONS': ('mybusinessnotifications', 'v1'),
|
|
351
|
-
'MYBUSINESSPLACEACTIONS': ('mybusinessplaceactions', 'v1'),
|
|
352
|
-
'MYBUSINESSQANDA': ('mybusinessqanda', 'v1'),
|
|
353
|
-
'MYBUSINESSVERIFICATIONS': ('mybusinessverifications', 'v1'),
|
|
354
|
-
'NETAPP': ('netapp', 'v1'),
|
|
355
|
-
'NETWORKCONNECTIVITY': ('networkconnectivity', 'v1'),
|
|
356
|
-
'NETWORKMANAGEMENT': ('networkmanagement', 'v1'),
|
|
357
|
-
'NETWORKSECURITY': ('networksecurity', 'v1'),
|
|
358
|
-
'NETWORKSERVICES': ('networkservices', 'v1'),
|
|
359
|
-
'NOTEBOOKS': ('notebooks', 'v2'),
|
|
360
|
-
'OAUTH2': ('oauth2', 'v2'),
|
|
361
|
-
'ONDEMANDSCANNING': ('ondemandscanning', 'v1'),
|
|
362
|
-
'ORACLEDATABASE': ('oracledatabase', 'v1'),
|
|
363
|
-
'ORGPOLICY': ('orgpolicy', 'v2'),
|
|
364
|
-
'OSCONFIG': ('osconfig', 'v1'),
|
|
365
|
-
'OSLOGIN': ('oslogin', 'v1'),
|
|
366
|
-
'PAGESPEEDONLINE': ('pagespeedonline', 'v5'),
|
|
367
|
-
'PAYMENTSRESELLERSUBSCRIPTION': ('paymentsresellersubscription', 'v1'),
|
|
368
|
-
'PEOPLE': ('people', 'v1'),
|
|
369
|
-
'PLACES': ('places', 'v1'),
|
|
370
|
-
'PLAYCUSTOMAPP': ('playcustomapp', 'v1'),
|
|
371
|
-
'PLAYDEVELOPERREPORTING': ('playdeveloperreporting', 'v1beta1'),
|
|
372
|
-
'PLAYGROUPING': ('playgrouping', 'v1alpha1'),
|
|
373
|
-
'PLAYINTEGRITY': ('playintegrity', 'v1'),
|
|
374
|
-
'POLICYANALYZER': ('policyanalyzer', 'v1'),
|
|
375
|
-
'POLICYSIMULATOR': ('policysimulator', 'v1'),
|
|
376
|
-
'POLICYTROUBLESHOOTER': ('policytroubleshooter', 'v1'),
|
|
377
|
-
'POLLEN': ('pollen', 'v1'),
|
|
378
|
-
'POLY': ('poly', 'v1'),
|
|
379
|
-
'PRIVATECA': ('privateca', 'v1'),
|
|
380
|
-
'PROD_TT_SASPORTAL': ('prod_tt_sasportal', 'v1alpha1'),
|
|
381
|
-
'PUBLICCA': ('publicca', 'v1'),
|
|
382
|
-
'PUBSUB': ('pubsub', 'v1'),
|
|
383
|
-
'PUBSUBLITE': ('pubsublite', 'v1'),
|
|
384
|
-
'RAPIDMIGRATIONASSESSMENT': ('rapidmigrationassessment', 'v1'),
|
|
385
|
-
'READERREVENUESUBSCRIPTIONLINKING': ('readerrevenuesubscriptionlinking', 'v1'),
|
|
386
|
-
'REALTIMEBIDDING': ('realtimebidding', 'v1'),
|
|
387
|
-
'RECAPTCHAENTERPRISE': ('recaptchaenterprise', 'v1'),
|
|
388
|
-
'RECOMMENDATIONENGINE': ('recommendationengine', 'v1beta1'),
|
|
389
|
-
'RECOMMENDER': ('recommender', 'v1'),
|
|
390
|
-
'REDIS': ('redis', 'v1'),
|
|
391
|
-
'RESELLER': ('reseller', 'v1'),
|
|
392
|
-
'RESOURCESETTINGS': ('resourcesettings', 'v1'),
|
|
393
|
-
'RETAIL': ('retail', 'v2'),
|
|
394
|
-
'RUN': ('run', 'v2'),
|
|
395
|
-
'RUNTIMECONFIG': ('runtimeconfig', 'v1'),
|
|
396
|
-
'SAFEBROWSING': ('safebrowsing', 'v5'),
|
|
397
|
-
'SASPORTAL': ('sasportal', 'v1alpha1'),
|
|
398
|
-
'SCRIPT': ('script', 'v1'),
|
|
399
|
-
'SEARCHADS360': ('searchads360', 'v0'),
|
|
400
|
-
'SEARCHCONSOLE': ('searchconsole', 'v1'),
|
|
401
|
-
'SECRETMANAGER': ('secretmanager', 'v1'),
|
|
402
|
-
'SECURITYCENTER': ('securitycenter', 'v1'),
|
|
403
|
-
'SERVICECONSUMERMANAGEMENT': ('serviceconsumermanagement', 'v1'),
|
|
404
|
-
'SERVICECONTROL': ('servicecontrol', 'v2'),
|
|
405
|
-
'SERVICEDIRECTORY': ('servicedirectory', 'v1'),
|
|
406
|
-
'SERVICEMANAGEMENT': ('servicemanagement', 'v1'),
|
|
407
|
-
'SERVICENETWORKING': ('servicenetworking', 'v1'),
|
|
408
|
-
'SERVICEUSAGE': ('serviceusage', 'v1'),
|
|
409
|
-
'SHEETS': ('sheets', 'v4'),
|
|
410
|
-
'SITEVERIFICATION': ('siteVerification', 'v1'),
|
|
411
|
-
'SLIDES': ('slides', 'v1'),
|
|
412
|
-
'SMARTDEVICEMANAGEMENT': ('smartdevicemanagement', 'v1'),
|
|
413
|
-
'SOLAR': ('solar', 'v1'),
|
|
414
|
-
'SPANNER': ('spanner', 'v1'),
|
|
415
|
-
'SPEECH': ('speech', 'v1'),
|
|
416
|
-
'SQLADMIN': ('sqladmin', 'v1'),
|
|
417
|
-
'STORAGE': ('storage', 'v1'),
|
|
418
|
-
'STORAGETRANSFER': ('storagetransfer', 'v1'),
|
|
419
|
-
'STREETVIEWPUBLISH': ('streetviewpublish', 'v1'),
|
|
420
|
-
'STS': ('sts', 'v1'),
|
|
421
|
-
'TAGMANAGER': ('tagmanager', 'v2'),
|
|
422
|
-
'TASKS': ('tasks', 'v1'),
|
|
423
|
-
'TESTING': ('testing', 'v1'),
|
|
424
|
-
'TEXTTOSPEECH': ('texttospeech', 'v1'),
|
|
425
|
-
'TOOLRESULTS': ('toolresults', 'v1beta3'),
|
|
426
|
-
'TPU': ('tpu', 'v2'),
|
|
427
|
-
'TRAFFICDIRECTOR': ('trafficdirector', 'v3'),
|
|
428
|
-
'TRANSCODER': ('transcoder', 'v1'),
|
|
429
|
-
'TRANSLATE': ('translate', 'v3'),
|
|
430
|
-
'TRAVELIMPACTMODEL': ('travelimpactmodel', 'v1'),
|
|
431
|
-
'VAULT': ('vault', 'v1'),
|
|
432
|
-
'VERIFIEDACCESS': ('verifiedaccess', 'v2'),
|
|
433
|
-
'VERSIONHISTORY': ('versionhistory', 'v1'),
|
|
434
|
-
'VIDEOINTELLIGENCE': ('videointelligence', 'v1'),
|
|
435
|
-
'VISION': ('vision', 'v1'),
|
|
436
|
-
'VMMIGRATION': ('vmmigration', 'v1'),
|
|
437
|
-
'VMWAREENGINE': ('vmwareengine', 'v1'),
|
|
438
|
-
'VPCACCESS': ('vpcaccess', 'v1'),
|
|
439
|
-
'WALLETOBJECTS': ('walletobjects', 'v1'),
|
|
440
|
-
'WEBFONTS': ('webfonts', 'v1'),
|
|
441
|
-
'WEBRISK': ('webrisk', 'v1'),
|
|
442
|
-
'WEBSECURITYSCANNER': ('websecurityscanner', 'v1'),
|
|
443
|
-
'WORKFLOWEXECUTIONS': ('workflowexecutions', 'v1'),
|
|
444
|
-
'WORKFLOWS': ('workflows', 'v1'),
|
|
445
|
-
'WORKLOADMANAGER': ('workloadmanager', 'v1'),
|
|
446
|
-
'WORKSPACEEVENTS': ('workspaceevents', 'v1'),
|
|
447
|
-
'WORKSTATIONS': ('workstations', 'v1'),
|
|
448
|
-
'YOUTUBE': ('youtube', 'v3'),
|
|
449
|
-
'YOUTUBEANALYTICS': ('youtubeAnalytics', 'v2'),
|
|
450
|
-
'YOUTUBEREPORTING': ('youtubereporting', 'v1')})
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
Service = S('Service', list(SERVICE_DEFINITIONS.keys()))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|